- 主题:求助,如何把整数40,变成‘\x28’,保证trans(40) == '\x28'
def trans( n ):
return '\\x' + str(hex(40))[2:]
虽然打印显示对,但感觉其本质是‘\\x28’
--
FROM 58.128.3.*
解决了,只需一个 chr
【 在 jlsthsdqyx 的大作中提到: 】
: def trans( n ):
: return '\\x' + str(hex(40))[2:]
: 虽然打印显示对,但感觉其本质是‘\\x28’
--
FROM 106.39.0.*
题目被截断了。本想把整数通过写trans函数转换为字节串,被转义字符处理卡住。不知有chr
【 在 flw 的大作中提到: 】
:
: 你确定你知道你自己在说什么吗?
: --
:
发自「今日水木 on MI MAX 3」
--
FROM 117.136.38.*
高手呀,试试
【 在 wincss 的大作中提到: 】
:
: bytes(\[40\]) == b'('
: chr(40) == '('
: chr(40).encode() == b'('
: --
:
发自「今日水木 on MI MAX 3」
--
FROM 117.136.38.*
确实,显示也不对。
终级问题:想把整数 222 转成 b'\xde' 呢?
【 在 wincss 的大作中提到: 】
:
: 显示也不对。。。尽量不要str,hex什么的,应该用format
: return '\\x{:02x}'.format(40)
: ...................
--
FROM 106.39.0.*
先谢,研究下。
【 在 callmebbser 的大作中提到: 】
:
: c: \\python
:
: Python 3.7.6 (tags/v3.7.6: 43364a7ae0, Dec 19 2019, 00: 42: 30) \[MSC v.1916 64
: bit (AMD64)\] on win32
:
: Type "help",
: ..................
发自「今日水木 on MI MAX 3」
--
FROM 123.120.97.*
问题解决,总结下:
方法:
"""bytes([40]) == b'('
chr(40) == '('
chr(40).encode() == b'('
return '\\x{:02x}'.format(40)
"""
实验:
for i in range(256):
print(i, ": ", chr(i).encode()) #bytes
for i in range(256):
print(i, ": ", i.to_bytes(1, 'little')) #bytes
for i in range(256):
print(i, ": ", '\\x{:02x}'.format(i)) # string
"""
输出:
output1: bytes utf-8
...
125 : b'}'
126 : b'~'
127 : b'\x7f'
128 : b'\xc2\x80'
129 : b'\xc2\x81'
130 : b'\xc2\x82'
131 : b'\xc2\x83'
...
output2: bytes
...
125 : b'}'
126 : b'~'
127 : b'\x7f'
128 : b'\x80'
129 : b'\x81'
...
output3: string
...
126 : \x7e
127 : \x7f
128 : \x80
129 : \x81
130 : \x82
131 : \x83
...
"""
【 在 callmebbser 的大作中提到: 】
: c:\python
: Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64
: bit (AMD64)] on win32
: ...................
--
FROM 123.120.97.*
wawawa,还真是,没领悟到啊,,,以为你那三个方法一个功能。。
【 在 wincss 的大作中提到: 】
: 第一次不就回了。。
:
--
修改:jlsthsdqyx FROM 106.39.0.*
FROM 106.39.0.*