如何将一串数字转换回二进制十六进制(\ x值)类型?

联合国1

编辑:

下面的代码以二进制模式读取文件(此示例中为图像):

with open("img_80px.png", mode='rb') as file:
    file_content = file.read()
    binary_data = []
    for i in file_content:
        binary_data.append(i)

现在,打印出来file_content将为我们提供二进制b' '格式的十六进制值字符串

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00P\x00\x00\x00<
\x08\x06\x00\x00\x00\xf1\'=\x8c\x00\x00\x00\tpHYs\x00\x00\x0fa
\x00\x00\x0fa\x01\xa8?\xa7i\x00\x009\xeeiTXtXML:com.adobe.xmp
\x00\\x00\x00\x00\x00<?xpacket begin="\xef\xbb\xbf" id="W5M0MpCehiHzreSzNTczkc9d"?> 
\n<x:xmpmeta xmlns:x="adobe:ns:meta/" 
x:xmptk="Adobe XMP Core 5.6-c138 79.159824, 2016/09/14-01:09:01 

 ....'

因此,代码通过遍历file_content并将每一位附加到binary_data(不知道这是否是最好的方法,甚至不确定为什么会起作用)将该二进制字符串转换为数字列表,因此我们得到了:

[137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13 ....]

问题是,如何将该列表转换b''十六进制二进制字符串或其他内容?如您所见,它\x在那里具有纯文本形式的值和元数据。不知道如何将其转换回去。

如果这种转换方式是强制性的,您是否可以建议另一种将二进制转换为整数字符串并返回的方法?

我尝试这样做:

binary_data_string = "".join(map(str, binary_data))

with open("edited_img_80px.png", mode='wb') as edited_file: 
    binary_hex = bytes.fromhex(binary_data_string)
    edited_file.write(binary_hex)

它抛出一个错误:

ValueError: non-hexadecimal number found in fromhex() arg at position 58313

而且我还尝试不将其转换为字符串,以保留列表中每个转换后的项目的信息,并能够将其转换回二进制,但是我得到了:

TypeError: fromhex() argument must be str, not list
贝雅明

由于您使用的是Python 3,因此可以执行以下操作:

>>>numbers = [222, 173, 190, 239]
>>>bytes(numbers)
b'\xde\xad\xbe\xef'

干杯!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将二进制值的字符串转换回char

将包含二进制值的字符串转换为十六进制

将二进制字符串转换为十六进制值

如何将ostringstream十六进制字符串字符对转换为单个unit8_t等效二进制值

如何将十六进制值的总和转换回十六进制值

如何使用 Powershell 将具有地址和 ASCII 值的十六进制字符串转换为二进制文件?

将十进制值转换为二进制,十六进制和八进制的单个函数不会转换为二进制

如何将二进制字符串值转换为十进制

二进制以十六进制值的形式吐出

将存储在char中的十六进制/二进制值转换为int-获得奇怪的结果

十六进制值的常规字符串到二进制字符串

我需要num类型的二进制和十六进制语法转换

在熊猫数据框中将列中的值从十六进制转换为二进制

如何将存储为字符串的十六进制值转换为 Python 中的十六进制值?

如何将十六进制字符串转换为十进制值

如何将十六进制字符串转换为列表中的十六进制值块?

将十六进制字符串值转换为十六进制数字

用bash将十六进制值写入二进制文件

将二进制数据与十六进制值匹配

如何区分二进制和十六进制值

分割一串二进制数字并将其存储在c ++中int类型的数组

如何将十进制值转换为二进制位?

将十六进制值添加到一串位

将字符串转换为Ruby中的数字二进制值

如何将二值文本数据转换为二进制(位表示)

如何将 \x 字符串转换为二进制并通过套接字发送

如何将负 f32 值转换为二进制字符串并再次返回

如何将字符串中的十六进制值转换为实际字节

如何将二进制数字转换为十六进制代码