簡體   English   中英

Python 十六進制字符串到帶反斜杠的十六進制字符串

[英]Python Hex-String to Hex-String with Backslash

我真的很困惑,Python 中的字節字符串。

我需要比較兩個字節字符串,所以它們應該被轉換成相同的(?)

我有一串十六進制值:

52fab71f49a01ef92e793b41c13c5458080679919c7e5888f195935bd50c1bb8

如果我使用bytes.fromHex('52fab...')將其轉換為字節字符串,我會得到:

b'R\xfa\xb7\x1fI\xa0\x1e\xf9.y;A\xc1<TX\x08\x06y\x91\x9c~X\x88\xf1\x95\x93[\xd5\x0c\x1b\xb8 '

但我希望開頭的'R''0x52' 我怎樣才能做到這一點?
為什么我得到'R'而不是'0x52' 例如,對於第 2 個字節,我得到 ' 'fa' '0xfa' ' 。

'y'、';'、'A' 等其他 Ascii“字母”也存在同樣的問題......

我希望這不會太令人困惑——經過長時間的研究,我還沒有找到合適的解決方案。

問候

丹尼爾

你不能。

如果您使用標准bytes類型,這就是它的字符串表示形式:它將所有 ASCII 字符表示為它們本身。 例如, b'\x42'是 ASCII 'R'字符,所以它會被打印為它本身。

當然,您可以創建自己的 function 以獲得您想要的 output,例如:

def print_me(thing: bytes):
    print(''.join(
        f'\\x{byte:02x}'
        for byte in thing
    ))

>>> print_me(bytes.fromhex("52fab71f49a01ef92e793b41c13c5458080679919c7e5888f195935bd50c1bb8"))
\x52\xfa\xb7\x1f\x49\xa0\x1e\xf9\x2e\x79\x3b\x41\xc1\x3c\x54\x58\x08\x06\x79\x91\x9c\x7e\x58\x88\xf1\x95\x93\x5b\xd5\x0c\x1b\xb8

但是存儲在您的bytes object 中的基礎數據仍然是相同的,無論您如何表示它。

暫無
暫無

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

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