【问题标题】:Convert binary string to hexadecimal string C将二进制字符串转换为十六进制字符串 C
【发布时间】:2017-02-23 18:14:21
【问题描述】:

正如标题所说,我对在 C 中将二进制字符串转换为十六进制字符串的最佳方法感兴趣。二进制字符串最多为 4 位,因此最好转换为单个十六进制字符。

感谢您的帮助,我不确定是否有内置的东西可以让这更容易,所以我还没有尝试发布。

【问题讨论】:

  • 您所说的“最佳”是什么意思?最快的?最简单的代码?
  • @samgak 抱歉,最简单的方法是性能非常差。不太担心性能。谢谢
  • 您的问题太宽泛,不合主题。 StackOverflow 不是编码服务。
  • @2501 作为一个 C 新手,我真的很感兴趣是否有一些内置的东西可以让这更容易,而不是编写我自己的函数。不过感谢您的意见
  • 将二进制字符串转换为 int 与 atoi 基数为 2,然后将 int 转换为 sprintf 的十六进制字符串

标签: c string binary char hex


【解决方案1】:

您可以使用strtol将二进制字符串转换为整数,然后使用sprintf将整数转换为十六进制字符串:

char* binaryString = "1101";

// convert binary string to integer
int value = (int)strtol(binaryString, NULL, 2);

// convert integer to hex string
char hexString[12]; // long enough for any 32-bit value, 4-byte aligned
sprintf(hexString, "%x", value);

// output hex string
printf(hexString);

输出:

d

如果保证是单个十六进制字符,只需使用hexString[0]

【讨论】:

    猜你喜欢
    • 2014-08-03
    • 2019-08-23
    • 1970-01-01
    • 2018-01-31
    • 2015-06-21
    • 2014-10-24
    • 2012-03-04
    • 2015-06-27
    相关资源
    最近更新 更多