【发布时间】:2017-12-06 11:57:16
【问题描述】:
我一般都知道什么是偏移量,但我对以下数组的偏移量有疑问。假设我有一个 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
等等
还是我解释错了?
【问题讨论】:
-
没错..
-
我不明白你是怎么想出
1..9字段Timestamp的;它的大小指定为 15,因此相关元素应为 15 而不是 9,即0xF8, 0xFA, 0xFB, 0xCA, 0xAC, 0x24, 0x53, 0x64, 0x4F, 0x1E, 0xA2, 0xF9, 0x78, 0xCA, 0x63。 -
差不多,但是你忘记了 size。并且偏移量以 十六进制 表示。这意味着“Info1”字段开始在
myArray[16](即myArray[0x10])。 -
几乎正确。第二个字段长 15 个字节,从 0x01 .. 0x0F 开始,而不是 0x09
-
不正确,因为对于偏移量 0x01,它是从 0x01 到 0x10 以十六进制表示的元素(大小为 15,十六进制 0xF),因此元素 0xF8、0xFA...、0xCA、0x63。