首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

急问个二进制文件写入有关问题

2012-02-17 
急!问个二进制文件写入问题我需要把一个数据如1448写入二进制文件,但是数据格式要求是L8+H8(低八位+高八位

急!问个二进制文件写入问题
我需要把一个数据如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。
代码如下:

C/C++ code
#include <stdio.h>typedef unsigned char BYTE; int main(int argc, char* argv[]){        unsigned int num,*p;     p = &num;        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;} 

热点排行