【问题标题】:Is there a C function to convert a string with a number in base X to a string in base Y?是否有一个 C 函数可以将带有以 X 为底的数字的字符串转换为以 Y 为底的字符串?
【发布时间】:2016-07-14 06:25:45
【问题描述】:

我知道strtol(hexstring, NULL, 16) 会将我的十六进制字符串hexstring 转换为十进制。同样,strtol(binstring, NULL, 2) 中的二进制也是这种情况。有没有一般的功能可以做到这一点?从一个基地到另一个基地?如果没有,有人可以提出最高效的方式吗?

【问题讨论】:

  • ints 在机器上不是“十进制”;它们是二进制的,但通常以十进制打印。 itoa 可以将整数转换为任意基数的字符串。
  • 非常感谢,我会调查的!
  • 然而,itoa 不是标准的 C 函数。顺便说一句,你可以很容易地编写一个代码。
  • 除非您需要 2-36 范围之外的碱基(或碱基的非标准编码),strtol() 系列函数用于从字符串转换为内部(二进制、非字符串)格式.然后,您需要一个单独的函数将内部格式转换为任意基数的字符串格式。标准 C 没有提供这样的功能——你必须在别处寻找。
  • 您可以使用此链接stackoverflow.com/questions/24916666/…。你会明白的。

标签: c string type-conversion base


【解决方案1】:

OP all ready 知道如何将表示base 数字的字符串s 转换为整数。示例用法:

char *endptr;
errno = 0;
unsigned long y = strtoul(s, &endptr, base);
if (endptr == s) No_conversion();
if (errno) Handle_Overflow();
if (*endptr) Handle_TrailingText();

使用复合文字进行内存分配很容易转换无符号整数。

How to use compound literals to fprintf() multiple formatted numbers with arbitrary bases?

如果您需要其他方法,请搜索0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

【讨论】:

    猜你喜欢
    • 2012-06-20
    • 2016-05-24
    • 1970-01-01
    • 2021-11-30
    • 2023-03-29
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多