Chinaunix首页 | 论坛 | 博客
  • 博客访问: 99236
  • 博文数量: 41
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 486
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-18 20:09
文章分类

全部博文(41)

文章存档

2016年(1)

2015年(1)

2014年(9)

2013年(30)

我的朋友

分类: C/C++

2013-05-07 10:10:18

字节序是一种存储方式的规则,分为大头字节序和小头字节序。对于非char类型的变量来说,都收到字节序的规则影响。一个int在大头字节序下和小头字节序下存储方式是不同的。

主机字节序:
x86的cpu都是小头的,
某些unix是大头的,
java是大头的,

网络字节序是大头的,
平时做c++开发的时候,只在端口号的时候需要考虑字节序,send, recv的时候都是把struct强转成字节流操作的,也没考虑过字节序。
原因如下:
c++在windows和linux下都是小头,所以不会出错。
如果java服务器,要发送一个int给c++客户端。此时就要考虑字节序。

方法1,java下发送前把int转成小头,然后强转成4个字节发送;
方法2,c++收到四个字节后,强转成int,然后转成小头。

protobuf序列化成小头字节流,所以用Protobuf可以不用考虑字节序了。

阅读(855) | 评论(0) | 转发(0) |
0

上一篇:内存对齐

下一篇:跨平台select网络库

给主人留下些什么吧!~~