我需要将二进制数据读取到缓冲区,但是在fstreams中,我已经将函数读取数据到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?发布于 2013-11-23 21:47:28
首先,将其读入未签名的char数据。
unsigned char uData[54];
fstream file(someFilename,ios::in | ios::binary);
file.read((char*)uData, 54);演员阵容是必要的,但无害。
发布于 2013-11-23 21:47:27
您不需要声明额外的数组uData。可以简单地将数据数组转换为无签名:
unsigned char* uData = reinterpret_cast<unsigned char*>(data);当访问uData时,指示编译器解释不同的数据,例如,data3 == -1,意思是uData3 == 255。
发布于 2013-11-23 21:48:35
你可以用
std::copy(data, data + n, uData);其中n是从file.read(data, 54)返回的结果。我认为,特别是对于char*和unsigned char*,您也可以移植地使用
std::streamsize n = file.read(reinterpret_cast<char*>(uData));https://stackoverflow.com/questions/20168313
复制相似问题