为了账号安全,请及时绑定邮箱和手机立即绑定

十六进制到字符串的转换

十六进制到字符串的转换

犯罪嫌疑人X 2021-11-30 10:25:51
我有一个这样的字符串:message='भी मिलता था। सरोपा #variable# भेंट करना अब शायद सिर्फ सिख परंपरा में ही बचा समाज की #variable# गहराई नापते रहे हैं गुणाधर'我已将此字符串转换为十六进制使用output = ''.join(hex(ord(c)) for c in message)  output1 = output.replace('0x','0')而最后的十六进制是:'092d0940020092e093f09320924093e0200925093e096402009380930094b092a093e02002307606107206906106206c065023020092d09470902091f020091509300928093e0200905092c0200936093e092f09260200938093f0930094d092b0200938093f0916020092a09300902092a0930093e020092e0947090202009390940020092c091a093e0200938092e093e091c0200915094002002307606107206906106206c065023020091709390930093e09080200928093e092a09240947020093009390947020093909480902020091709410923093e09270930'如何从编码的十六进制中取回原始字符串?或如何从输出中取回原始字符串(无需替换)?
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

binascii 库已经具有十六进制编码和编码的功能


import binascii


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

messageEncoded = binascii.hexlify(message.encode())

print(messageEncoded)


messageDecoded =  binascii.unhexlify(messageEncoded)

print(messageDecoded.decode())


查看完整回答
反对 回复 2021-11-30
?
HUX布斯

TA贡献1876条经验 获得超6个赞

由于已经指定了一些评论,如果更换是不可能解码0x的0,我能得到的最接近的是以下


# Deencoding

hexs = []

tmp = ''

for i in range(len(output1)):

    if i < len(output1) - 1 and output1[i] == '0' and output1[i+1] != '0':

        hexs.append(tmp)

        tmp = ''

    else:

        tmp += output1[i]

if tmp != '':

    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


查看完整回答
反对 回复 2021-11-30
  • 2 回答
  • 0 关注
  • 266 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信