首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络协议 >

32位程序转成64位后 网络传输字节数变了吗?该如何解决

2013-01-02 
32位程序转成64位后 网络传输字节数变了吗?本帖最后由 aiwanchuanqi 于 2011-03-05 15:31:13 编辑在32位下

32位程序转成64位后 网络传输字节数变了吗?
本帖最后由 aiwanchuanqi 于 2011-03-05 15:31:13 编辑 在32位下int进行序列化后是4字节, 64位下进行序列化后是8字节?

那原来传输一个int只有4字节现在不是变多了吗?
[解决办法]
不一定。取决于你的协议如何解析数据,例如你可以
把8个字节作为一个整数,或者4个字节做整数,或者两个字节
,或者一个,只要够用就可以。
[解决办法]

引用:
在32位下int进行序列化后是4字节, 64位下进行序列化后是8字节?

那原来传输一个int只有4字节现在不是变多了吗?


64位数据模型有好几种:ILP64, LP64, LLP64。

TypeILP64LP64LLP64
int643232
long646432
pointer646464
long long646464

只有ILP64的int是64位的;LP64和LLP64的int都还是32位的。

楼主是要移植到哪个64位操作系统上? windows使用的是LLP64,Linux使用的是LP64

- 千里孤行
[解决办法]
如果程序写的不好会发生这样的情况
就象你说的如果直接把int传出去的话就会这样
实际上通讯协议规定了此时应该传送多少字节
比如规定了要传送4字节,那么程序应该保证在32位和64位下编译后都还是
只传送4字节,这样才是规范的做法。
[解决办法]
int、long等数据类型和系统字长有严格的对应关系,如果楼主希望跨平台通讯请使用平台无关的数据类型

如: int_32 uint_32 int_16 uint_16等

热点排行