我一般都知道偏移是什么,但我对以下数组的偏移有疑问。我们假设我有一个uint8数组:
const myArray uint8[]=
{
0xCB, 0xF8, 0xFA, 0xFB, 0xCA, 0xAC, 0x24, 0x53, 0x64, 0x4F, 0x1E, 0xA2,
0xF9, 0x78, 0xCA, 0x63, 0xB8, 0x7F, 0xFC, 0xFB, 0xD8, 0xFA, 0xFB, 0x8F,
0x67, 0xC1, 0xFD, 0xF8, 0xC2, 0xF8, 0xFF, 0xF9, 0xFA, 0xE4, 0xFA, 0xF9,
0xFB, 0xFE, 0xE4, 0xFA, 0xCA, 0xCF, 0x94, 0xD5, 0xD6, 0xCA, 0xA2, 0xA2,
....
....
....
....
}
现在我有描述说:
--------------------------------------------------
| Offset in myArray | meaning | size (Byte) |
--------------------------------------------------
| 0x00 | Version | 1 |
-------------------------------------------------
| 0x01 | Timestamp | 15 |
------------------------------------------------
| 0x10 | Info1 | 8 |
------------------------------------------------
| 0x18 | Info2 | 2 |
------------------------------------------------
myArray中的这个意思是:
对于偏移量0x00:它是myArray的索引为0的元素,所以0xCB
对于偏移0x01:它是索引为1..9的元素,所以0xF8,0xFA,0xFB,0xCA,0xAC,0x24,0x53,0x64,0x4F
等
或者我解释错了吗?
答案 0 :(得分:0)
您的元素具有给定的大小,如您的大小列所述。所以这基本上告诉你的是:
版本从偏移 0x00 (又名,位置0)开始,大小为1,因此它的第一个元素是: 0xCB < / p>
时间戳从偏移 0x01 (又名,位置1)开始,大小为15,因此它的组合元素为: [0xF8,0xFA,0xFB ,0xCA,0xAC,0x24,0x53,0x64,0x4F,0x1E,0xA2,0xF9,0x78,0xCA,0x63]
Info1 从偏移 0x10 (又名,位置16)开始,大小为8,因此它的组合元素为: [0xB8,0x7F,0xFC ,0xFB,0xD8,0xFA,0xFB,0x8F]
Info2 从偏移量0x18(又名,位置24)开始,大小为2,因此它的组合元素为: [0x67,0xC1]
所以它会......
你的分析中似乎出现了一个问题,正如其他人指出的那样,偏移量是基数16(十六进制)。所以0x10是1 * 16 + 0 = 16.
如何将每个字节序列解释为正确的类型取决于您。
这有意义吗?