簡體   English   中英

將字符串轉換為原始字節

[英]Converting string to raw bytes

我編寫了一個使用原始字節的程序(我不知道這是否是正確的名稱!)但是用戶將輸入數據為純字符串。

如何轉換它們?

我嘗試了一個方法,但它返回一個長度為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

使用binascii.unhexlify()

import binascii

binary = binascii.unhexlify(text)

同樣的模塊也有binascii.hexlify() ,以鏡像操作。

演示:

>>> 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()調用輕松修復。

您必須從5A (表示十六進制數的字符串)到0x5A90 (整數)並將它們輸入chr() 你可以用int('0x5A', 16)進行第一次轉換,所以你會得到類似的東西

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM