试图在python中输入转义的十六进制字符



我正在编写一个脚本来测试串行通信链接,我想从键盘输入一个转义序列到脚本中,如xB6xB7。我认为我的问题是缺乏对字符串的理解。下面是我所做的一个测试的控制台序列,我试图理解它是如何工作的:

test = 'x69x6Ax6B'
type(test)
<class 'str'>
len(test)
3
print(str.encode(test))
b'ijk'                      # this is the kind of result I want
test = input('?')
?x69x6Ax6B
type(test)
<class 'str'>
len(test)
12                          # why is this length 12 not 3 as above?
print(str.encode(test))
b'\x69\x6A\x6B'          # this is not what I want

原谅这个新手问题。我试过使用字节代替str.encode,但结果相同。我已经设法用pyserial编写了一个串行通信程序,所以我不是完全愚蠢,诚实!

当您输入input()时,它将自动转义为\

所以要先把它转换成字节

test_bytes = test.encode('utf8')

,那么您可以解码它并告诉python\应该被解释为unicode转义

actual_answer = test_bytes.decode("unicode-escape")
# 'ijk'

相关内容

  • 没有找到相关文章

最新更新