我需要读二进制数据来缓冲,但在fstreams中我读取函数读取数据到 char 缓冲区,所以我的问题是:
如何将二进制数据传输/转换为 unsigned char 缓冲区,在这种情况下它是最佳解决方案吗?
实施例
char data[54];
unsigned char uData[54];
fstream file(someFilename,ios::in | ios::binary);
file.read(data,54);
// There to transport **char** data into **unsigned char** data (?)
// How to?
答案 0 :(得分:3)
首先将它读入无符号字符数据
unsigned char uData[54];
fstream file(someFilename,ios::in | ios::binary);
file.read((char*)uData, 54);
演员阵容是必要但无害的。
答案 1 :(得分:2)
您不需要声明额外的数组uData。数据数组可以简单地转换为unsigned:
unsigned char* uData = reinterpret_cast<unsigned char*>(data);
访问uData时,指示编译器解释不同的数据,例如data [3] == -1,表示uData [3] == 255
答案 2 :(得分:1)
你可以使用
std::copy(data, data + n, uData);
其中n
是file.read(data, 54)
返回的结果。我想,特别是char*
和unsigned char*
您也可以使用
std::streamsize n = file.read(reinterpret_cast<char*>(uData));