簡體   English   中英

Python防止從我的Var中刪除反斜杠時將HEX解碼為ASCII

[英]Python prevent decoding HEX to ASCII while removing backslashes from my Var

我想從變量中刪除一些不需要的符號。 在這種情況下,符號為反斜杠。 我使用的是十六進制數字,作為示例,我將在下面展示一些簡短的簡單代碼。 但是我不希望python將我的HEX轉換為ASCII,如何防止這種情況發生? 我有一些很長的外殼代碼供asm稍后使用,這真的很長,而手工刪除\\是一個漫長的過程。 我知道有不同的方式,例如使用echo -e "x\\x\\x\\x" > output等,但是我的整個腳本將用python編寫。 謝謝

>>> a = "\x31\xC0\x50\x68\x74\x76"
>>> b = a.strip("\\")
>>> print b
1�Phtv

>>> a = "\x31\x32\x33\x34\x35\x36"
>>> b = a.strip("\\")
>>> print b
123456

最后,我希望它打印我的var:

>>> print b
x31x32x33x34x35x36

您的代碼中有兩個問題。

首先是簡單的一個: strip()僅刪除一個事件。 因此,您應該使用replace("\\\\", "") 這會將每個反斜杠替換為“”,這與刪除反斜杠相同。

第二個問題是python的反斜杠行為:

為了使示例正常工作,您需要在字符串前面附加一個“ r”以表明它是原始字符串。 a = r"\\x31\\xC0\\x50\\x68\\x74\\x76" 在原始字符串中,反斜杠不會轉義字符,而只會保留反斜杠。

>>> r"\x31\xC0\x50\x68\x74\x76"
'\\x31\\xC0\\x50\\x68\\x74\\x76'

您的變量中沒有反斜杠:

>>> a = "\x31\xC0\x50\x68\x74\x76"
>>> print(a)
1ÀPhtv

以換行符為例:在Python中編寫"\\n"將為您提供帶一個字符的字符串-換行符-並且沒有反斜杠。 有關這些語法的完整語法,請參見字符串文字文檔

現在,如果您真的想用這樣的反斜杠寫字符串,可以使用r修飾符:

>>> a = r"\x31\xC0\x50\x68\x74\x76"
>>> print(a)
\x31\xC0\x50\x68\x74\x76
>>> print(a.replace('\\', ''))
x31xC0x50x68x74x76

但是,如果要將常規字符串轉換為十六進制編碼的符號,則可以逐個字符地將其轉換為數字( "\\x31" == "1" -> 49 ),然后轉換為十六進制( "0x31" ),最后刪除第一個字符:

>>> a = "\x31\xC0\x50\x68\x74\x76"
>>> print(''.join([hex(ord(x))[1:] for x in a]))
'x31xc0x50x68x74x76'

暫無
暫無

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

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