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同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值