編集:私が提供したGoogleのものだけでなく、任意の16進数配列の一般的なケースが必要であることに注意してください。
背景の編集: 背景はネットワークです: DNS パケットを解析して、その QNAME を取得しようとしています。パケット全体を文字列として取り込み、すべての文字が 1 バイトを表します。どうやらこの問題は Pascal の文字列の問題のようで、struct モジュールを使用するのがよいようです。
Python 2.7 に、8 進数値を含む char 配列があります。たとえば、配列があるとしましょう
DNS = "\03www\06google\03com\0"
私は手に入れたい:
これを行う効率的な方法は何ですか?私が最初に考えたのは、DNS char 配列を繰り返し処理し、新しい配列の回答に char を追加することでした。「\」文字が表示されるたびに、「\」とその後の 2 つの文字を無視します。新しい配列を使用せずに結果の 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