玩蛇网提供最新Python编程技术信息以及Python资源下载!

python内十六进制形式下的'0x2d'和'\x2d'如何理解

如题,这两种表示方法有什么区别。都在什么情况下使用

'0x20' 是一个 multi-character character constant 它对应的值是0x30783230

(注: '0' 'x' '2' 的 ascii 码分别是 0x30 0x78 0x32)

'\x20' 是一个 char 它的值是0x20

(注: '\x[0-9a-fA-F]{1,2}' 用16进制表示一个char 比如 '\xFF'
     '\[0-7]{1,3}' 用8进制表示一个char 比如 '\100' )

$ cat 1.c

#include <stdio.h>

int main() {
  int a = '0x20';
  int b = '\x20';
  printf("a = 0x%x\n", a);
  printf("b = 0x%x\n", b);
  return 0;
}

$ gcc -Wall 1.c

1.c:4:11: warning: multi-character character constant [-Wmultichar]
   int a = '0x20';
           ^

$ ./a.out

a = 0x30783230
b = 0x20

'\x2d' 主要是用来表是一个不能直接显示的单字节字符的编码

'0x2d' 应该算是一个标准的16进制表示的字符串,可以通过int('0x2d', 16) 转换为int 类型的值

你可以认为'0x2d'是语法错误,'\x2d'才是正确的写法。

具体说'0x2d'不是一个char,而是一个int,它的值是0x30783264或者0x64327830,具体是哪个要看实现。

C标准这么说:

注意它提到了在C++里这个东西的type是char,据我所知至少VC支持这么写:'\xe5\xad\x97',这是一个UTF-8编码的"字"。

'0x2d'是包含4个字符的字符串吧, '\x2d'表示字符'-'(其ASCII数值为0x2d=45)。

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19681.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月31日 - 10时55分54秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules