欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

把 十六进制字符串转换为字节码 字符串 通义 chatgpt 有大用

把 十六进制字符串转换为字节码

在Python中,要将十六进制字符串转换为字节码(bytes类型),可以使用 binascii.unhexlify 函数。这个函数属于 binascii 模块,专门用于处理二进制和ASCII字符串之间的转换。下面是一个简单的示例:

Python        
1import binascii
2
3# 十六进制字符串
4hex_str = "48656c6c6f20576f726c64"  # 对应于 "Hello World" 的十六进制表示
5
6# 使用binascii.unhexlify转换为字节码
7byte_code = binascii.unhexlify(hex_str)
8
9print("字节码:", byte_code)
10print("转换为字符串:", byte_code.decode('utf-8'))  # 解码字节码为普通字符串并打印


这段代码首先导入了 binascii 模块,然后定义了一个十六进制字符串 hex_str。接下来,使用 binascii.unhexlify(hex_str) 将这个十六进制字符串转换成了字节码。最后,通过 .decode('utf-8') 方法将字节码解码为普通的UTF-8编码的字符串并打印出来。



把 十六进制字符串 45d7ac72e76f242b20b77b9bf9bf9d5915894e669a24e6c6  转换为字节码

可以使用上述提到的 binascii.unhexlify 方法来实现这一转换。下面是具体的代码示例:

Python        
1import binascii
2
3# 给定的十六进制字符串
4hex_str = "45d7ac72e76f242b20b77b9bf9bf9d5915894e669a24e6c6"
5
6# 使用binascii.unhexlify将十六进制字符串转换为字节码
7byte_code = binascii.unhexlify(hex_str)
8
9print("转换得到的字节码为:", byte_code)

   print("转换为字符串:", byte_code.decode('utf-8'))  # 默认是utf-8  # 解码字节码为普通字符串并打印,可能会报错,因为可能某个字节不能够被转换为utf-8字符串


这段代码将会输出转换得到的字节码。需要注意的是,直接打印字节码可能不会直观显示出可读的文本内容,因为这取决于原始数据是否代表可打印的字符。如果想要查看其对应的文本(假设它是某种可解码的文本格式),可以尝试使用相应的解码方式,比如.decode('utf-8'),但前提是确信该字节码序列对应于某种特定的字符编码。



把 十六进制字符串转换为字节码

hex_string = "48656c6c6f20576f726c64"
# 分割为每两个字符一个的子串
hex_pairs = [hex_string[i:i + 2] for i in range(0, len(hex_string), 2)]
print(len(hex_pairs))
print(type(hex_pairs))
# 将每对十六进制转换为ASCII字符并连接
ascii_string = ''.join(chr(int(pair, 16)) for pair in hex_pairs)

print(ascii_string)

这个 Python 脚本的目的是将一个十六进制字符串转换为对应的 ASCII 字符串。以下是对脚本的详细解释:


hex_string = "48656c6c6f20576f726c64":


这行代码定义了一个十六进制字符串 "48656c6c6f20576f726c64",这个字符串表示 "Hello World" 的 ASCII 编码。

hex_pairs = [hex_string[i:i + 2] for i in range(0, len(hex_string), 2)]:


这行代码使用列表推导式创建了一个新的列表 hex_pairs。

列表推导式的原理是:

遍历 hex_string 的每两个字符,从索引 0 开始到 len(hex_string) 结束,步长为 2。

对于每两个字符,使用切片 hex_string[i:i + 2] 提取出这两个字符,并将其添加到 hex_pairs 列表中。

最终,hex_pairs 列表包含了 "48", "65", "6c", "6c", "6f", "20", "57", "6f", "72", "6c", "64" 这 11 个子字符串。

print(len(hex_string)):


这行代码打印出 hex_string 的长度,即 22。

ascii_string = ''.join(chr(int(pair, 16)) for pair in hex_pairs):


这行代码使用列表推导式创建了一个新的字符串 ascii_string。

列表推导式的原理是:

遍历 hex_pairs 列表中的每个子字符串 pair。

对于每个 pair,将其转换为整数 int(pair, 16),这里的 16 表示将 pair 视为十六进制数。

然后使用 chr() 函数将这个整数转换为对应的 ASCII 字符。

最后,使用 ''.join() 将所有 ASCII 字符连接起来,形成最终的 ascii_string。

最终,ascii_string 包含了字符串 "Hello World"。

print(ascii_string):


这行代码打印出 ascii_string 的值,即 "Hello World"。

总之,这个 Python 脚本演示了如何将一个十六进制字符串转换为对应的 ASCII 字符串。它首先将十六进制字符串分割为每两个字符一个的子串,然后将每个子串转换为对应的 ASCII 字符,最后将所有 ASCII 字符连接起来,形成最终的 ASCII 字符串。




普通分类: