【问题标题】:What are the fractional octal and hexadecimal conversion specifier in C?C中的小数八进制和十六进制转换说明符是什么?
【发布时间】:2022-01-08 11:45:46
【问题描述】:

我知道在使用printf 函数时,我可以用%o 表示整数的八进制值,用%x 表示它的十六进制值。
但是,如何将浮点值表示为八进制或十六进制?
当尝试使用相同的说明符时,Xcode 13.x 可以预见地抛出一个警告,告诉我我正在尝试使用带有浮点值的整数说明符。

我该如何解决这个问题?
谢谢

【问题讨论】:

  • 如果您想以%a 打印十六进制数字的方式打印八进制 数字,您可以执行以下操作: 使用sprintf(..."%a"...) 构建十六进制表示。 171.75 将导致 AB.C。将每个十六进制数字转换为 4 个二进制数字:AB.C 变为 10101011.1100。删除或添加小数点前后的前导零,以便小数点前后的位数可以被 3 整除。将 3 个二进制数字转换为八进制。 010101011.110 变为 253.6,这是 171.75 的八进制表示。
  • 谢谢。我将如何在代码中执行此操作?你的程序是我会“手动”做的

标签: c hex printf octal conversion-specifier


【解决方案1】:

您可以使用%a%A(分别使用小写或大写字母)将floatdouble 格式化为十六进制。浮点数没有八进制转换说明符。

这会格式化值。如果要查看浮点对象的表示,应使用unsigned char * 访问其字节,然后可以使用oxX 转换说明符格式化这些字节。

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 2015-12-12
    • 2021-01-07
    • 2015-09-06
    • 2013-10-22
    • 1970-01-01
    • 2014-06-10
    • 2021-06-08
    相关资源
    最近更新 更多