[英]How to convert binary array into a hexadecimal in C
所以目前我有一个二进制数字数组,比如 {1, 1, 1, 1, 0, 0, 0, 0} 并且我试图弄清楚如何将这个数组转换为 'uint8_t 类型的十六进制数字' 在 C 中(在本例中,我希望它为 0xf0),但我正在努力弄清楚如何做到这一点。 到目前为止,我已经能够将数字转换为十六进制字符串,除非我希望它是无符号的 integer 类型。 谁能给我一些建议? 谢谢!
尝试这个
#include <stdio.h>
#include <stdint.h>
uint16_t ConvertToDec(uint16_t* bits, uint16_t size)
{
uint16_t result = 0;
for (uint16_t i = 0; i < size; i++) {
result |= bits[i];
if(i != size-1)
result <<= 1;
}
return result;
}
int main()
{
uint16_t bits[] = { 1, 1, 1, 1, 0, 0, 0, 0 };
uint16_t len = (sizeof(bits) / sizeof(bits[0])); // get array size
uint16_t result = ConvertToDec(bits, len);
char hex[20];
sprintf(hex, "0x%02X", result);
printf("%s", hex);
return 0;
}
ConvertToDec 将数组转换为 8 位数字,并使用 sprintf 将 output 作为十六进制保存到十六进制缓冲区中。 编辑:我对代码进行了一些修改,使其更具可读性,并且也可以使用 16 位数字。
此致
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.