将字符串转换为原始字节

2024-05-22 01:15:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个处理原始字节的程序(我不知道这是不是正确的名字!)但用户将以纯字符串的形式输入数据。

如何转换它们?

我试过使用一个方法,但它返回一个长度为0的字符串!

这是起始字符串:

5A05705DC25CA15123C8E4750B80D0A9

以下是我需要的结果:

\x5A\x05\x70\x5D\xC2\x5C\xA1\x51\x23\xC8\xE4\x75\x0B\x80\xD0\xA9

下面是我写的方法:

def convertStringToByte(string):
    byte_char = "\\x"
    n=2
    result = ""
    bytesList = [string[i:i+n] for i in range(0, len(string), n)]
    for i in range(0, len(bytesList)):
        bytesList[i] = byte_char + bytesList[i]
    return result

Tags: 方法字符串用户in程序forstringlen
2条回答

必须从5A(表示十六进制数的字符串)到0x5A90(整数),并将它们输入chr()。您可以使用int('0x5A', 16)进行第一次转换,这样您将得到

chr(int('0x5A', 16))

使用^{}

import binascii

binary = binascii.unhexlify(text)

同一个模块也有^{}来镜像操作。

演示:

>>> import binascii
>>> binary = '\x5A\x05\x70\x5D\xC2\x5C\xA1\x51\x23\xC8\xE4\x75\x0B\x80\xD0\xA9'
>>> text = '5A05705DC25CA15123C8E4750B80D0A9'
>>> binary == binascii.unhexlify(text)
True
>>> text == binascii.hexlify(binary).upper()
True

hexlify()操作生成小写十六进制,但这很容易通过.upper()调用修复。

相关问题 更多 >