编码dec char而不是octal

时间:2016-01-05 21:48:09

标签: encoding char decimal

我不明白为什么

char test = '\032';

转换为

26 dec

'\032'似乎被解释为八进制,但我希望将其视为十进制数。

我认为我对字符编码感到困惑。

  

任何人都可以为我澄清一下,并告诉我如何按照我想要的方式转换它吗?

2 个答案:

答案 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;