python脚本提取16进制
时间: 2025-06-21 10:29:32 浏览: 7
### 如何使用Python编写提取16进制数据的脚本
#### 使用内置函数处理十六进制数据
Python 提供了多种方式来处理十六进制数据。对于字符串到十六进制以及反过来的操作,可以利用 `binascii` 库中的工具函数。
```python
import binascii
def string_to_hex(input_string):
"""Convert a regular string into its hexadecimal representation."""
hex_representation = input_string.encode('utf-8').hex()
return hex_representation
def hex_to_string(hex_input):
"""Convert a hexadecimal string back to the original string."""
byte_data = bytes.fromhex(hex_input)
decoded_string = byte_data.decode('utf-8')
return decoded_string
```
上述代码展示了两个简单的辅助函数用于双向转换:从普通的 UTF-8 编码字符串转为十六进制表示形式[^4];反之亦然。
#### 处理字节数组并将其作为十六进制输出
当涉及到更复杂的场景比如网络通信时,通常会遇到原始字节序列而不是纯文本串。此时可以通过如下方式读取文件或接收来自套接字的数据,并以十六进制格式展示:
```python
def read_file_as_hex(file_path):
with open(file_path, 'rb') as file:
content = file.read() # Read binary data from file
hex_output = binascii.hexlify(content).decode('utf-8')
formatted_hex = ':'.join([hex_output[i:i+2] for i in range(0, len(hex_output), 2)])
return formatted_hex
```
这段代码实现了打开指定路径下的二进制文件,读取其内容并通过 `binascii.hexlify()` 方法转化为易于阅读的形式——每一对字符代表一个字节,中间用冒号分隔以便于区分各个字节[^5]。
#### 实际应用场景实例
假设有一个项目涉及 Python 和 C 程序之间的交互,在这种情况下可能会频繁地交换经过编码后的消息体。下面给出了一段模拟客户端向服务器发送请求并将响应解析回可理解的信息的例子:
```python
import socket
def send_receive_hex_message(server_address, port, message):
try:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((server_address, port))
encoded_msg = message.encode().hex() # Convert message to hex before sending
client_socket.sendall(bytes(encoded_msg, 'utf-8'))
received_response = ''
while True:
part = client_socket.recv(1024)
if not part:
break
received_response += part.decode()
unhexed_response = bytearray.fromhex(received_response.strip()).decode()
return unhexed_response
finally:
client_socket.close()
```
此片段说明了一个完整的流程,包括连接建立、消息准备(即把普通字符串变为适合传输的十六进制)、实际传送过程直至最后对接收到的内容进行反向变换恢复成初始状态[^2]。
阅读全文
相关推荐


















