【发布时间】:2020-09-10 01:13:27
【问题描述】:
所以我试图弄清楚如何将二进制数组(大小为 4 或 8)转换为 C 中的十进制和十六进制数。
例如假设您有 {0, 0, 0, 1} 或 {1, 1, 1, 1, 0, 0, 0, 0} 并且您想转换为十进制和十六进制。我设法通过this link 使用 8 二进制数组使其工作,但是当我尝试将它用于 4 元素时,我的方法似乎失败了。
uint8_t ConvertToDec(uint8_t * bits, uint8_t size)
{
uint8_t result = 0 ;
for(uint8_t i=0; i < size-1; i++ ){
result |=bits[i];
result<<=1;
}
return result;
}
int main()
{
uint8_t bits[] = {1, 1, 1, 1, 0, 0, 0, 0};
uint8_t len = (sizeof(bits)/sizeof(bits[0]));
uint8_t result = ConvertToDec(bits,len);
char hex[5];
sprintf(hex,"0x%02X",result);
printf("%s",hex);
return 0;
}
【问题讨论】:
-
请出示您的代码。如果我们看不到代码,我们无法指出您在代码中可能遇到的问题。
-
是的,我已经相应地进行了编辑,谢谢!
-
阅读How to debug small programs 和更多关于C programming language,尤其是Modern C 的书
标签: c binary hex bit-manipulation