我的第一篇文章很好地坚持引导线尽我所能!
我基本上试图在二进制级别上创建一个编辑文件的方法。我有办法读取字节(不幸的是不是大格式)但我仍然坚持如何将字节写入新文件。我想我可以将字节转换为十六进制,然后以这种方式写入文件,但它的另一个步骤就像要避免。有没有一种方法可以将字节写入您可以建议的文件?如果可能的话,也允许它以5gb等大格式写入。
以下是用于将任何文件转换为字节的代码:
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
//Variables
const unsigned long long size = 64ULL * 1024ULL * 1024ULL;
unsigned long long file[size];
class ByteManager
{
char const* input;
public:
void set_values(char const*);
char* ConvertToBytes()
{
ifstream streamData(input);
streamData.seekg(0, ios::end);
size_t len = streamData.tellg();
char* Bytes = new char[len];
streamData.seekg(0, ios::beg);
streamData.read(Bytes, len);
streamData.close();
return Bytes;
//return 0;
}
};
void ByteManager::set_values(char const* a)
{
input = a;
};
注意:我可以发布十六进制类,如果这实际上是最好的方法。
还要提前感谢提交的任何建议/反馈/代码! 〜nobodyshome
答案 0 :(得分:0)
答案 1 :(得分:0)
您正在将整个文件读入内存。在伪代码中:
bytes = read_whole_file();
你可能想一次只读一下。
while (file_has_more_bytes)
{
byte = read_one_byte_from_file();
do_something_with(byte);
}
但是我猜你的压缩算法想要一次知道所有的字节。您可以考虑使用多次传递方法,通读一次以获得所需的统计数据,然后再次阅读以进行实际处理。