int32小端序序列化及跨大小端架构反序列化的实现疑问与咨询
int32小端序序列化及跨大小端架构反序列化的实现疑问与咨询
我现在有个关于int32小端序序列化的疑问想请教大家,先贴一下我实现的序列化代码:
public byte[] Serialize(int value) { return new byte[4] { (byte)value, (byte)(value >> 8), (byte)(value >> 16), (byte)(value >> 24) }; }
我特意强制把整数按小端序来序列化,拿数字2000举个例子:
它的二进制表示是:00000000 00000000 00000111 11010000
(byte)value会把第一个字节设为11010000,对应十进制的208;(byte)(value >> 8)是把数值右移8位,得到00000000 00000000 00000000 00000111,取第一个字节就是00000111,对应十进制的7;- 后面两个字节都是0;
最终得到的字节数组就是{ 208, 7, 0, 0 },二进制看起来就是11010000 00000111 00000000 00000000!
这地方我有点搞不懂了:既然小端序架构里数字就是按这种顺序存储的,那我们用位运算处理后得到的这个顺序,是不是反而等价于大端序的顺序?另外关于反序列化的部分...
备注:内容来源于stack exchange,提问作者Руслан Сорока




