You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7编写DNS查询时,如何将socket.recv返回字节转为int数组?

在Python 2.7中将socket返回的字符串转为int数组的方法

嘿,我来帮你搞定这个问题!在Python 2.7里处理socket.recv返回的字符串转int数组其实超简单——因为Python2里的str本身就是字节序列,每个字符对应一个原始字节的值,咱们只需要把每个字符转成对应的整数就行。

核心实现方法

直接用列表推导式结合ord()函数就能完成转换,代码示例如下:

import socket

# 假设你已经完成socket初始化、发送DNS查询的步骤
dns_response = sock.recv(512)  # 这里得到的是字符串形式的字节数据
int_array = [ord(char) for char in dns_response]

原理说明

  • ord(char)函数会把每个字符(也就是单个字节)转换成对应的十进制整数,比如字节\x05会被转成5,\xff会被转成255,完全对应C#里把byte数组转为int数组的效果。
  • 举个实际例子:如果socket返回的是'\x00\x01\x0f\x2a',转换后的int_array就是[0, 1, 15, 42],和C#处理后的结果完全一致。

额外小贴士

如果之后要解析DNS报文的具体字段(比如取标识位、查询类型这些),用ord()得到的整数可以直接做位运算,比如(int_array[2] << 8) | int_array[3]就能把两个字节拼成一个16位整数,完全适配DNS报文的二进制格式要求。

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:22:33