我不明白为什么
char test = '\032';
转换为
26 dec
'\032'
似乎被解释为八进制,但我希望将其视为十进制数。
我认为我对字符编码感到困惑。
任何人都可以为我澄清一下,并告诉我如何按照我想要的方式转换它吗?
答案 0 :(得分:1)
在C中,'\octal-digit'
开始八进制转义序列。没有 decimal-escape-sequence 。
代码可以简单地使用:
char test = 32;
要将值32分配给char
,代码有很多选项:
// octal escape sequence
char test1 = '\040'; // \ and then 1, 2 or 3 octal digits
char test2 = '\40';
// hexadecimal escape sequence
char test3 = '\x20'; // \x and then 1 or more hexadecimal digits
// integer decimal constant
char test4 = 32; // 1-9 and then 0 or more decimal digits
// integer octal constant
char test5 = 040; // 0 and then 0 or more octal digits
char test6 = 0040;
char test7 = 00040;
// integer hexadecimal constant
char test8 = 0x20; // 0x or 0X and then 1 or more hexadecimal digits
char test9 = 0X20;
// universal-character-name
char testA = '\u0020'; // \u & 4 hex digits
char testB = '\U00000020'; // \U & 8 hex digits
// character constant
char testC = ' '; // When the character set is ASCII
答案 1 :(得分:0)
您使用的语法(\ 0xxx)是八进制的。要使用小数,您可以这样做:
char test = (char)32;