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

如何能保证小弟我存到buf里面的short int 能够正确的解析出来

2012-03-13 
怎么能保证我存到buf里面的short int 能够正确的解析出来开一个charbuffer[100]把一个shortintx存进去(x的

怎么能保证我存到buf里面的short int 能够正确的解析出来
开一个char   buffer[100]
把一个short   int   x   存进去(x的大小完全能用2个字节表示)
如下
memcpy(buffer,   (void   *)(&x),   2);
解析时
x   =   (short   int)   *buffer;


但是,这么做依赖于short   int是2个字节,否则就不正确了

如果不依赖short   int是2个字节,该怎么办

[解决办法]
2

sizeof(short int)
[解决办法]
正解
[解决办法]
如果你存的时候只能是 2 个字节,
那么读的时候也只能是两个字节,
如果多了或者少了, 就出错了~
[解决办法]
或者用 Union 吧:

union test
{
short int si;
char buf[100];
};

就无所谓这个 memcpy 多少字节了 ~~

[解决办法]
实在是不理解:
存的时候只能是二字节,取的时候要与short int 无关。

既然是与short int 大小无关,为什么又是存的时候肯定是二字节呢?
反过来,如果肯定是二字节,那是不是说sizeof(short int) == 2 肯定成立了?
[解决办法]
信息通信中最常见使用这种unsigned int类型的东西,通常我的做法是单独写了一个类来解析这些数据的,BCD码,unsigned int等类型,而且高低位都是事先大家约定好的。

热点排行