【问题标题】:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape [closed]SyntaxError:(unicode错误)'unicodeescape'编解码器无法解码位置0-1中的字节:截断\ xXX转义[关闭]
【发布时间】:2023-03-05 19:41:01
【问题描述】:

我有一个问题需要将十进制数转换为 十六进制。到目前为止,我遇到的更多问题是我需要将结果更改为放置 \x,例如,如果转换给出“0x63dd”,我需要它为“\x63\xdd”,但我不能放置\x,因为这个报错

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes 
    in position 0-1: truncated \ xXX escape
Decimal = 25565   
Hexa = hex(Decimal).replace("0x","")
N1 = Hexa[:2]
N2 = Hexa[2:]
print("\x"+N1)
print("\x"+N2)

【问题讨论】:

标签: python python-3.x unicode


【解决方案1】:

这个错误是因为\x有一个特殊的含义。即用于编码的东西。如果你想在字符串前面加上 backslash and x,你需要做 "\\x" + N1。 (第一个 backslas 逃脱了第二个。)

所以你的代码会变成下面这样

Decimal = 25565   
Hexa = hex(Decimal).replace("0x","")
N1 = Hexa[:2]
N2 = Hexa[2:]
print("\\x"+N1)
print("\\x"+N2)

然后返回

\x63
\xdd

【讨论】:

  • 我知道这已经很有帮助,如果它不要求很多,因为我会将它传递给字节而不得到 b '\\x63'?
  • 如果我理解正确,您想将字符串转换回字节对象吗?然后使用bytes.fromhex(N1.replace("\\x","")),这应该会导致b'\xdd'
  • 如果这个答案对您有帮助,请upvote and accept 它向其他人展示它有效。祝你有美好的一天!
  • @wuerfelfreak — 对坏问题的字面回答可能很危险。请参阅What is the XY problem?
  • @vicnor Python 整数有一个.to_bytes 方法,例如(25565).to_bytes(2,'big') 将生成一个 2 字节的大端值。
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 2016-09-20
  • 2021-05-17
  • 2016-11-03
  • 2020-01-06
相关资源
最近更新 更多