1
我必须为学校做一个小型作业。我在C.写这个的问题是:从uint_16t转换后uint8_t的值
鉴于
uint16_t A[] = { 0xabce, 0x43fe, 0xcf54, 0xffff };
uint8_t *p = (uint8_t *)&A[0];
什么是p[3]
价值?
我做了一些研究,发现这些数字将会使用little-endian放回到我的电脑中。所以
p[] = {171, 67, 207, 255}
然而,当我打印p[]
我得到
p[0] = 206
p[1] = 171
p[2] = 254
p[3] = 67
我感到很困惑这个,谁能告诉我为什么发生这种情况?
你知道'p [0]'和'p [1]'都会指向A [0]的单独字节吗? –
投射指针不会转换。 p [0]是A [0]的第一个字节,p [1]是A [0]的第二个字节,p [2]是A [1]的第一个字节]'等 –
'uint8_t'不是字符类型,因此这是未定义的行为。 – EOF