前回の続きですが、文字列を分割した後は分割した文字列を16進数数値としてASCII文字に変更する方法です。
これをしたくて前回の事を調べました。
変換するには、いくつかのステップが必要です。
1. 文字列を16進数文字列として数値変換する
2. 変換した数値をASCIIとして文字列にする
```python
`gutter:true;
#!/usr/bin/env python3
import sys
def split_word(s, chunk):
a = zip(*[s[i::chunk] for i in range(chunk)])
return [''.join(t) for t in a]
for line in iter(sys.stdin.readline, ""):
words = line.rstrip()
num_words = split_word(words, 2)
for hex_num in iter(num_words):
# 16進数文字列を数値に変換
int_val = int(hex_num, 16)
# 数値をASCIIに変換
print(chr(int_val), end="")
# 最後に改行を入れる
print("")
```
16進数の文字列(0xが先頭に付いていない)を数値に変換するには、int関数で16を指定します。
ASCIIに変換する際には、chr関数に数値を渡します。
私が動作させた時には、変な数値が入るとエラーになったので、chrに渡す数値がASCIIの文字列の範囲か調べた方が良いです。
0 件のコメント :
コメントを投稿