簡體   English   中英

Python二進制字符串表示形式

[英]Python binary string representation

誰能幫我解決以下問題:

我有一個本地定義為str1 = 'CV\\xca\\x86\\x11\\x85\\x01\\xc8' str1和從另一層代碼接收的str2:

print str2 gives 'CV\\xca\\x86\\x11\\x85\\x01\\xc8'因此它們看起來相同,但是:

print binascii.hexlify(str1) gives 4356ca86118501c8 or INT: 4852288325706645960

但是對於str2

print binascii.hexlify(str2) gives 43565c7863615c7838365c7831315c7838355c7830315c786338 or int 108206947078930905153039906183652663420044626270557263434900280

問題似乎可能是不同的編碼方式

print chardet.detect(str1) gives me my local encoding: {'confidence': 0.73, 'language': '', 'encoding': 'Windows-1252'}

print chardet.detect(str2) gives {'confidence': 1, 'language': '', 'encoding': 'ascii'}

我如何修改str2以獲得與str1相同的十六進制或整數值?

您有一個帶文字反斜杠, 'x'字符和十六進制數字的字符串:

>>> from binascii import unhexlify
>>> unhexlify('43565c7863615c7838365c7831315c7838355c7830315c786338')
'CV\\xca\\x86\\x11\\x85\\x01\\xc8'

字符串的表示形式使反斜杠加倍,因此您可以重現該值。 另一個字符串的表示形式沒有這種加倍,因為\\xhh序列每個都形成一個字符:

>>> unhexlify('4356ca86118501c8')
'CV\xca\x86\x11\x85\x01\xc8'

比較各個字符:

>>> 'CV\xca\x86\x11\x85\x01\xc8'[2]
'\xca'
>>> 'CV\\xca\\x86\\x11\\x85\\x01\\xc8'[2]
'\\'

您可以使用string_escape編解碼器解碼轉義序列:

>>> from binascii import hexlify
>>> 'CV\\xca\\x86\\x11\\x85\\x01\\xc8'.decode('string_escape')
'CV\xca\x86\x11\x85\x01\xc8'
>>> hexlify('CV\\xca\\x86\\x11\\x85\\x01\\xc8'.decode('string_escape'))
'4356ca86118501c8'

暫無
暫無

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

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