急!问个二进制文件写入问题
我需要把一个数据如1448写入二进制文件,但是数据格式要求是L8+H8(低八位+高八位)占两个字节,写入后的数据因该是(十六进制显示)A8 05,因该怎么办?还请各位高手指教。语言C++。
[解决办法]
考虑跨平台的话可以将整数进行按位与和移位操作赋值给字符变量,然后逐个写入
[解决办法]
你理解Big endian和Little endian吗? Little endian和Big endian是CPU存放数据的两种不同顺序。对于整型、长整型等数据类型,Big endian认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节);而Little endian则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放数据的低位字节到高位字节)。
一般来说,x86系列CPU都是little-endian的字节序,PowerPC通常是Big endian,还有的CPU能通过跳线来设置CPU工作于Little endian还是Big endian模式。
首先你需要判断机器是big还是little。
代码如下:
#include <stdio.h>typedef unsigned char BYTE; int main(int argc, char* argv[]){ unsigned int num,*p; p = # num = 0; *(BYTE *)p = 0xff; if(num == 0xff) { printf("The endian of cpu is little\n"); } else //num == 0xff000000 { printf("The endian of cpu is big\n"); } //system("pause"); return 0;}