繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM