Little Endian字节混乱。如何在little endian中获取1字节的整数值

时间:2014-11-20 12:35:17

标签: objective-c

我有以下十六进制字符串:

<0001cb01 1d006745 78568967 85001800 d7ff0000>

我需要抓住小端的第三个字节。十六进制的第三个字节会是什么样的?它的十进制值是多少?

<cb011d>

203

还是别的什么?

1 个答案:

答案 0 :(得分:3)

每个字节由两个十六进制字符表示,范围从0x00(0十进制)到0xFF(十进制255) - &#39; 0x&#39;前缀经常用于表示十六进制。所以你的字符串代表20个字节,值为0x00,0x01,0xCB,0x01等。

要存储大于255的数字需要多个字节 - 在小端系统中,最低有效字节首先出现,而在大端系统中,最重要的字节首先出现。因此,小端数字会出现“向后”的数字。在记忆中。十进制数1000是十六进制的0x03E8,因此在一个小端系统上,0xE8字节首先出现(在较低的存储器地址),然后是0x03字节。单个字节永远不会是小端的&#39;或者&#39; big-endian&#39; - 该概念仅适用于多个字节的排序。

但不清楚你的字符串代表什么。 可能你应该假设字符串是一个大数字,并说如果这个20字节的数字存储为little-endian,那么哪个字节会出现在第三个字节中,在这种情况下它将是结束时的第三个字节,0xFF,十进制值255.或者它可能意味着字符串中的第三个字节,0xCB,十进制203.您必须根据您对该问题的其他信息来决定。