【问题标题】:How to convert binary array into a hexadecimal in C如何在C中将二进制数组转换为十六进制
【发布时间】:2020-09-08 22:43:47
【问题描述】:

所以目前我有一个二进制数字数组,比如 {1, 1, 1, 1, 0, 0, 0, 0},我试图弄清楚如何将这个数组转换为十六进制数字在 C 中键入“uint8_t”(在本例中,我希望它为 0xf0),但我正在努力弄清楚如何做到这一点。到目前为止,我已经能够将数字转换为十六进制字符串,但我希望它是无符号整数类型。谁能给我一些建议?谢谢!

【问题讨论】:

标签: c hex byte


【解决方案1】:

试试这个

#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 将输出作为十六进制保存到十六进制缓冲区中。 编辑:我对代码进行了一些修改,使其更具可读性,并且也可以使用 16 位数字。

最好的问候

【讨论】:

  • 您好,谢谢!我有几个问题想。首先,为什么它在你有 i
  • @oliviah 你好,首先循环中的 -1 是因为在最后一个循环中第 8 位丢失了,是的,它也可以使用 4 的大小。我对代码进行了一些修改,使其更具可读性,并添加了 16 位数字。亲切的问候!
猜你喜欢
  • 2020-09-10
  • 2019-08-29
  • 2019-03-24
  • 2015-12-02
  • 2010-10-03
  • 2012-06-26
  • 2016-12-25
  • 2015-08-03
  • 2013-02-19
相关资源
最近更新 更多