如何在C中将2个二进制文件转换为short
Posted
技术标签:
【中文标题】如何在C中将2个二进制文件转换为short【英文标题】:How to convert 2 binaries to a short in C 【发布时间】:2020-06-23 17:16:12 【问题描述】:签名:
short convetToSignedShort(uint8_t first, uint8_t second)
signed short j;
j = (signed char)first + (signed char)second;
printf("signed short: %d\n", j);
return j;
无符号:
short convetToUnsignedShort(uint8_t first, uint8_t second)
unsigned short j;
j = (unsigned short)first + (unsigned short)second;
printf("unsigned short: %d\n", j);
return j;
我知道我没有使用正确的方法。
例如,我需要 0x01 0x01
为 257
,我该怎么做?
【问题讨论】:
您需要将其中一个值左移 8 位。 演员(signed char)
是个坏主意,因为您很容易溢出signed char
。您需要决定哪个参数将较高位赋予*256
【参考方案1】:
为无符号做这样的事情:
uint16_t convertToUnsignedShort(uint8_t high, uint8_t low)
uint16_t j;
j = ((uint16_t)high << 8) + (uint16_t)low;
printf("unsigned short: %d\n", j);
return j;
对于已签名,它的意义不大。您希望低字节的符号位会发生什么?
【讨论】:
以上是关于如何在C中将2个二进制文件转换为short的主要内容,如果未能解决你的问题,请参考以下文章