编辑:我应该注意,我想要任何十六进制数组的一般情况,而不仅仅是我提供的谷歌。
编辑背景:背景是网络:我正在解析一个 DNS 数据包并试图获取它的 QNAME。我将整个数据包作为一个字符串接收,每个字符代表一个字节。显然这个问题看起来像一个 Pascal 字符串问题,使用 struct 模块似乎是要走的路。
我在 Python 2.7 中有一个 char 数组,其中包含八进制值。例如,假设我有一个数组
DNS = "\03www\06google\03com\0"
我想得到:
有什么有效的方法来做到这一点?我的第一个想法是遍历 DNS 字符数组并将字符添加到我的新数组答案中。每次我看到一个 '\' 字符时,我都会忽略 '\' 和它后面的两个字符。有没有办法在不使用新数组的情况下获得结果 www.google.com?
我令人作呕的实现(我的答案是一个字符数组,这不是我想要的,我只想要字符串 www.google.com:
DNS = "\\03www\\06google\\03com\\0"
answer = []
i = 0
while i < len(DNS):
if DNS[i] == '\\' and DNS[i+1] != 0:
i += 3
elif DNS[i] == '\\' and DNS[i+1] == 0:
break
else:
answer.append(DNS[i])
i += 1