猿问

十六进制到字符串的转换

我有一个这样的字符串:

message='भी मिलता था। सरोपा #variable# भेंट करना अब शायद सिर्फ सिख परंपरा में ही बचा समाज की #variable# गहराई नापते रहे हैं गुणाधर'

我已将此字符串转换为十六进制使用

output = ''.join(hex(ord(c)) for c in message) 
output1 = output.replace('0x','0')

最后的十六进制是:

'092d0940020092e093f09320924093e0200925093e096402009380930094b092a093e02002307606107206906106206c065023020092d09470902091f020091509300928093e0200905092c0200936093e092f09260200938093f0930094d092b0200938093f0916020092a09300902092a0930093e020092e0947090202009390940020092c091a093e0200938092e093e091c0200915094002002307606107206906106206c065023020091709390930093e09080200928093e092a09240947020093009390947020093909480902020091709410923093e09270930'

如何从编码的十六进制中取回原始字符串?

或如何从输出中取回原始字符串(无需替换)?


犯罪嫌疑人X
浏览 267回答 2
2回答

子衿沉夜

binascii 库已经具有十六进制编码和编码的功能import binasciimessage='भी मिलता था। सरोपा #variable# भेंट करना अब शायद सिर्फ सिख परंपरा में ही बचा समाज की #variable# गहराई नापते रहे हैं गुणाधर'messageEncoded = binascii.hexlify(message.encode())print(messageEncoded)messageDecoded =  binascii.unhexlify(messageEncoded)print(messageDecoded.decode())

HUX布斯

由于已经指定了一些评论,如果更换是不可能解码0x的0,我能得到的最接近的是以下# Deencodinghexs = []tmp = ''for i in range(len(output1)):&nbsp; &nbsp; if i < len(output1) - 1 and output1[i] == '0' and output1[i+1] != '0':&nbsp; &nbsp; &nbsp; &nbsp; hexs.append(tmp)&nbsp; &nbsp; &nbsp; &nbsp; tmp = ''&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; tmp += output1[i]if tmp != '':&nbsp; &nbsp; hexs.append(tmp)print(''.join(chr(int(c,16)) for c in hexs[1:]))这将在你有你的十六进制代码失败,因为902,你怎么确定它是否是2个字符9和2或只有一个902?如果你能保持的0x,你可以简单地使用其他命令与把它找回来int,并chr为后续print(''.join(chr(int(c, 16)) for c in output[2:].split('0x')))但是做你想做的最好的方法可能是使用 binascii
随时随地看视频慕课网APP

相关分类

Python
我要回答