当前位置: 技术问答>linux和unix
在C++中怎样定义一个半字节变量??
来源: 互联网 发布时间:2016-02-11
本文导语: 我要把我定义个一数据结构体,写入文件,写进去的数字是ASC码,我让写进去的数字以BCD码的形式存储,怎么处理?? 我定义的结构体如下: typedef struct phonebook_data{ char name[8]; char phone[8]; }BookData; 我打开文件的...
我要把我定义个一数据结构体,写入文件,写进去的数字是ASC码,我让写进去的数字以BCD码的形式存储,怎么处理??
我定义的结构体如下:
typedef struct phonebook_data{
char name[8];
char phone[8];
}BookData;
我打开文件的形式是以“wb”。写入文件后,用U-E打开显示如下:
64 64 64 64 00 00 00 00 31 32 33 34 00 00 00 00 ;
但我希望它显示如下:
64 64 64 64 00 00 00 00 12 34 00 00 00 00 00 00 ;
主要解决问题:把16位的电话码存入8字节变量中。所以我想可不可以定义半字节的变量。
请教各位有没有处理的方法,先谢了。
我定义的结构体如下:
typedef struct phonebook_data{
char name[8];
char phone[8];
}BookData;
我打开文件的形式是以“wb”。写入文件后,用U-E打开显示如下:
64 64 64 64 00 00 00 00 31 32 33 34 00 00 00 00 ;
但我希望它显示如下:
64 64 64 64 00 00 00 00 12 34 00 00 00 00 00 00 ;
主要解决问题:把16位的电话码存入8字节变量中。所以我想可不可以定义半字节的变量。
请教各位有没有处理的方法,先谢了。
|
做个数据转换不就得了?
|
不管多少字节可以进行位操作,如
unsigned char b;
b |= 0x01; 就是把b的最后位为1
b |= 0x02; 第2位
b &=(~0x01) 就是把b的最后位为0
...
unsigned char b;
b |= 0x01; 就是把b的最后位为1
b |= 0x02; 第2位
b &=(~0x01) 就是把b的最后位为0
...
|
有点意思.....
电话号码还好说, 0-9, 最多每个数占4位(9:1001)
你所说那个半字节变量, 从系统的构造来说应该是不存在的.
有一个办法, 就是存为long int 型, 只要4个字节就可以了.
电话号码还好说, 0-9, 最多每个数占4位(9:1001)
你所说那个半字节变量, 从系统的构造来说应该是不存在的.
有一个办法, 就是存为long int 型, 只要4个字节就可以了.
|
这样压缩, 也可以.