+
 新版

python3如何使用chr()把一个大于128数字转为ascii的bytes类型

亲情的三分 发布于 2016/10/02 21:03
阅读 3K+
收藏 0

在 num<128的时候,使用chr(num).encode('utf-8')得到的是一个字符的ascii十六进制

但是在num>128的时候,使用chr(num).encode('utf-8')得到的是两个字节的ascii十六进制,请问该如何转换,我能够得到一个字节的十六进制??

以下是问题补充:

@亲情的三分:我的表达失误了。我想求得是一个bytes类型的字符串 就是把chr()获得str字符串变为bytes类型的字符串,但是如果采用上面我说的方法,得到结果和上面一样 print(chr(127).encode('utf-8'))-->b'\x7f' print(chr(129).encode('utf-8'))--->b'\xc2\x81' 但是在ascii表中,十进制129代表的十六进制为\x81',我就是想知道如何把大于128整数转为一个字节的字符,而不是两个字节,上面encode()方法不行啊。 (2016/10/02 21:41)
加载中
1
漓江
漓江

使用chr()得到的是ASCII的字符,比如十进制的33,使用chr('33')得到的是一个感叹号[!],确认一下是不是你的需求。

如果只是为了得到16进制,可以使用hex(num).split("0x").zfill(8)

亲情的三分
亲情的三分
谢谢哥们。楼下那哥们给我说清楚了谢谢
亲情的三分
亲情的三分
您帮我再看看我的补充?谢谢
1
wei2011
wei2011

用encode()方法并不会得到十六进制串,它只会得到转码好的bytes类型,把整数转成十六进制应该这样:'%.2X' % num


OSCHINA
登录后可查看更多优质内容
返回顶部
顶部