[英]Reading binary data with fstream method
我需要将二进制数据读取到缓冲区,但是在fstream中,我已经读取了将数据读取到char缓冲区的函数,所以我的问题是:
如何将二进制数据传输/广播到无符号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?
首先将其读入未签名的char数据中
unsigned char uData[54];
fstream file(someFilename,ios::in | ios::binary);
file.read((char*)uData, 54);
演员表是必要的,但无害。
您无需声明额外的数组uData。 数据数组可以简单地转换为无符号:
unsigned char* uData = reinterpret_cast<unsigned char*>(data);
访问uData时,您指示编译器解释不同的数据,例如data [3] == -1,表示uData [3] == 255
你可以用
std::copy(data, data + n, uData);
其中n
是从file.read(data, 54)
返回的结果。 我认为 ,特别是对于char*
和unsigned char*
您也可以方便地使用
std::streamsize n = file.read(reinterpret_cast<char*>(uData));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.