You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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,提问作者Руслан Сорока

火山引擎 最新活动