21.8 怎样转换整数到二进制或十六进制?

确定你真的知道你在问什么。整数是以二进制存储的, 虽然 对于大多数情况下, 把它们当成是八进制、十进制或十六进制 并没有错, 只要方便就好。数字表达的进制只有在读入或写出 到外部世界时才起作用。

在源程序中, 非十进制的数字由在前的 0 或 0x 表示 (分别位 八进制和十六进制)。在进行 I/O 操作时, 数字格式的进制在  printf 和 scanf 这类函数里, 由格式符决定  (%d, %o 和 %x 等); 在  strtol() 和 strtoul() 中, 则由他们的第三 个参数决定。 如果你想要输出任意进制的数字字符串, 你需要 自己提供相关的函数 (基本上是 strtol 的反函数)。 在进行二进制 I/O 时, 进制就不相干了。

更多的有关二进制的 I/O, 参见问题 2.9。还有问题  8.4 和 13.1

参考资料: [ISO, Secs. 7.10.1.5,7.10.1.6]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)