C语言中的整数类型实际上没有基础.当你说:
int a = 100;
int b = 0x64;
Run Code Online (Sandbox Code Playgroud)
......都a与b具有相同的值.谈论转换a为十六进制(或b十进制)是没有任何意义的.
您不能将数字从十进制"转换"为十六进制,因为它是一个数字(通常作为二进制存储在内存中).在所有可能的位置系统中,所有相同数字的表示都存在于数字线上的完全相同的点上.你可以用不同的基础打印它:
int num = 15;
printf( "%d", num ); /* prints 15 */
printf( "0x%x", num ); /* prints 0xf */
printf( "0%o", num ); /* prints 017 (octal) */
num = 0xf;
printf( "%d", num ); /* prints 15 */
printf( "0x%x", num ); /* prints 0xf */
printf( "0%o", num ); /* prints 017 (octal) */
num = 017;
printf( "%d", num ); /* prints 15 */
printf( "0x%x", num ); /* prints 0xf */
printf( "0%o", num ); /* prints 017 (octal) */
Run Code Online (Sandbox Code Playgroud)