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