如何在C中将二进制数组转换为十六进制

问题描述 投票:0回答:1

因此,目前我有一个二进制数字数组,例如{1,1,1,1,0,0,0,0},我试图弄清楚如何将该数组转换为类型的十六进制数字C语言中的'uint8_t'(在此示例中,我希望它为0xf0),但我一直在努力寻找方法。到目前为止,我已经能够将数字转换为十六进制字符串,但我希望它是无符号整数类型。有人可以给我一些建议吗?谢谢!

c network-programming hex byte
1个回答
0
投票

尝试一下

#include <stdio.h>
#include <stdint.h>

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;
}

ConvertToDec将数组转换为8位数字,并使用sprintf将输出以十六进制形式保存到十六进制缓冲区中。最好的问候

© www.soinside.com 2019 - 2024. All rights reserved.