【问题标题】:Octal-based number format in CC中基于八进制的数字格式
【发布时间】:2015-08-16 15:53:47
【问题描述】:

我在使用 C 中以零开头的 int 值时遇到问题(例如 00111001)。 我知道 C 编译器将数字开头的零理解为八进制数。

我的问题是如何禁用它?我想将 8 位整数转换为 char array[8]。 例如01010001={'0','1','0','1','0','0','0','1'}

【问题讨论】:

  • 这是二进制表示吗?您是否可以将其存储在字符串中而不是 int 中?
  • 只需将源代码中的前导零替换为空格即可。你有什么理由不能这样做吗?
  • 如果您想要一个带前导零的整数 - 例如 int 中数字的二进制表示,或者只是数字的字符串表示,那么从问题的开头就不清楚已经在下面回答了。你想要一个实际的整数还是一个字符字符串?
  • 另外,您不能禁用八进制文字。如果您谈论在运行时解析字符串,那是可能的。请用一些示例代码澄清问题。
  • 要扩展我之前的评论,您可能有一个XY problem。您已经假设禁用八进制是您问题的解决方案,并且您正在询问我们如何做到这一点。事实上,禁用八进制(甚至不清楚这意味着什么)几乎肯定不是解决方案。您需要更清楚地描述您的问题。

标签: c binary char int octal


【解决方案1】:

如果您使用的是 GCC,则可以使用二进制文字。将变量设置为 0b00111001。

https://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html

【讨论】:

    【解决方案2】:

    用引号括住您的号码:

    char array[] = "01010001";
    

    以上内容将使每个数字成为您可以阅读的数组中的一个字符,并在末尾放置一个 '\0' 字符,以便它可以用作 C 字符串 - 根据您的最后一句话。请注意,这个字符串的长度(在内存中)将是 9 个字符,但因为添加了 NUL 字符。

    【讨论】:

    • 如果你想要正好8个字符,你可以写char array[8] = "01010001";。当然你不会有一个字符串,只有一个字符数组。
    • 事实是,我不确定他是否想要itoa(),我这里有什么,或者完全不同的东西,他不会更新问题。不知道。
    • 他在一小时前发布了这个问题,而且他是该网站的新手。让我们给他一些时间。
    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 2010-12-09
    • 2018-01-26
    • 2012-08-02
    相关资源
    最近更新 更多