C/C++读取文件字节顺序

struct s
{
short a:8;
short b:4;
short c:4;

};

fstream fs("test", ios::binary | ios::in | ios::out);

if(!fs)
{
cerr<<"::>_<::"<<endl;
exit(1);
}
s ss;
fs.read((char*) &ss, 2);

若test存储格式为AB CD

则a=-85,b=-3,c=-4

因为C语言总是从低位开始读取数据,首先读取一个字节0xAB,由于a是8位,故a=0xAB,又因为a是short(有符号),所以0xAB应该是补码,取反加一后a=-85;再读取一个字节0xCD,由于b是4位,故将低四位D赋给b,b=D,因为b是short(有符号),所以D(1101)为补码,取反加一后b=-3,c同理。

你可能感兴趣的:(C/C++读取文件字节顺序)