我的 WIN32 (C ++)代码有一个UINT,可以将其称为数字。 此UINT(或INT无关紧要)的值以 0 开头,并被识别为八进制值。可以使用标准运算符,值将保持八进制。十六进制也是可能的(前面的0x)。 问题是我必须在缓冲区中使用数字的值来计算,而不更改数字的值。我可以在声明行上为缓冲区分配一个类似07777的值,但如果使用像 buffer = number 这样的操作,缓冲区中的值将在十进制基数上识别。
任何人都有解决方案吗?
答案 0 :(得分:6)
C中没有“八进制值”这样的东西。整数以二进制形式存储。
例如,这三个常量:
10
012
0xA
所有类型和价值都完全相同。它们只是不同的符号 - 而且在源代码中只存在 ,而不是在运行时。为变量分配八进制常量不会使变量成为八进制。
例如,这个:
int n = 012;
将值 10 存储在n
中。您可以使用以下几种格式打印该值:
printf("%d\n", n);
printf("0%o\n", n);
printf("0x%x\n", n);
在所有三种情况下,存储的值都将转换为人类可读的字符序列,十进制,八进制或十六进制。
任何人都有解决方案吗?
不,因为没有实际问题。
(在评论中提到这一点,请归功于juanchopanza。)