gpt4 book ai didi

将 uint8_t 数组转换为 uint16_t

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:59 27 4
gpt4 key购买 nike

我有一个包含两个元素的 uint8_t 数组:

uint8_t ui8[2]; // uint8_t array
ui8[0] = 70; // LSB
ui1[1] = 60; // MSB

我想从这两个 uin8_t 值中得到一个 uint16_t 数字(不是数组)。我使用这种方法来获得此结果:uint16_t ui16 = 6070

uint16_t ui16 = ui8[1] | (ui8[0] << 8);

但是我得到了 uint16_t ui16 = 15430;

是否使用了错误的方法来获得我需要的东西?还是少了什么?

最佳答案

也许您打算使用十六进制数:

uint8_t ui8[2]; // uint8_t array
ui8[0] = 0x70; // LSB
ui1[1] = 0x60; // MSB

uint16_t ui16 = ui8[1] | (ui8[0] << 8);
printf("%x\n", ui16); // 7060

如果您想使用十进制数,则需要将“MSB”乘以 100 并将它们相加。为此使用十进制数要少见得多。

uint8_t ui8[2]; // uint8_t array
ui8[0] = 70; // LSB
ui1[1] = 60; // MSB

uint16_t ui16 = ui8[1] + (ui8[0] * 100);
printf("%d\n", ui16); // 7060

请注意,在这两种情况下,“70”都将在“60”之前,因为您要移动数组的第一个元素 (70)。 70 将是 MSB。

关于将 uint8_t 数组转换为 uint16_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52183191/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com