假設我拿到了一個很長很長的byte sequence:
b"*f\x97\xab&f-\x81ffff\x88f\xf67}@G\x06*\x97 \xab*6ff\xfe\x13\x0e\xebff\xbe\xeb\x81f[\x066\xec&\xee\xee\xfeI\xab\x97\xec\xc2\x06\x96\xa4P\xeb\xb9\x13\xfb\xebffff\xcbf/\x0f\x84f>\x0f\x0bf\xc2\x0f\x81\xa4\xe0\xebffff:6L\xabffff\xec\xecf\xcbffffffffffffffff\xecf\x0e\x93\x01fJ\x0b\xecf\xae\x93\x81f>\xbdffff%f+\xcb\x8efg\xee\x88ff\xcb*\xd3ff\x81f^\xbdffff\x15f+\xcb\x8ef\xe2\xee&f\x8e\xf1u\xec\x81\x11*e!f\x8ef\x97\xab*\xcb\x97fff\xc8\xf2\x8ef\x97\xab*\xcb\x97f\x88f\xf67\xfdSG\x06*\x97\xe0\xabl\xec\xc2\x06\x93f<\x0f\xa2f\x1a\x0fef\x05\x0f\xeefx\x0fLf\x8c\x0f\xf6f\xef\x0f\x0bfF\x0f\xcbf\x9e\x0f\x0b\xa4\xe0\xeb*\xbdJf*/\x97f\xecf\xef\x93\xecf\xe1\x93yf\x059:6L\xab\xec\xec\xcb\xee\xcbf\x9e\xeb\xabf\xcf\xcbfffftf\xd3\x0bffff\x93f<\xeb\xa2f\x1a\xebef\x05\xeb\xeefx\xebLf\x8c\xeb\xf6f\xef\xeb\x0bfF\xeb\x8ef\x97\xabNf\xc2\x06\x0b\xa4\xe0\xebffff:6L\xabffff\xcbf\x9e\xeb\x11f\xcf\xcbffff\x9af\xd3\x84ffff\xb1\xa4\xe0\xebffff:6L\xab*L\xd3\xad\xcbf\x9e\xebffff)\x13\xe0\xebffff:6L\xabffff\xcbf\x9e\xeb*L\xd3f\x86\xa4\xe0\xebffff:6L\xab:f\x88\xee\xcbf\x9e\xebffff\xd3\x13\xe0\xebffff:6L\xab*Lff\xe7\x13\xa4\xebffffff+\xbdffff\xd4\xech\x0bffff\xfd\xa4\xa4\xebffffff?"
該怎麼了解它呢?
首先,因為是byte,所以最前面有個b,並且字串頭尾被引號包起來。
再來會發現字串存在某種特殊pattern: 由斜線跟小寫字母x開頭,後面跟著兩個數字或字母組成的東西。
如果我們假設上面那串byte sequence叫做test,並且執行以下code:
for item in test:
print(item)
會發現輸出好多整數。
奇怪,為什麼由字母、數字跟其他符號組成的字串,透過遍歷印出來,反而會得到整數數字呢?
所以我又撰寫以下code:
for i, item in enumerate(test):
print("index {}: {} {}".format(i, test[i:(i+1)],item))
發現得到的輸出像是這樣:
index 0: b'*' 42 index 1: b'f' 102 index 2: b'\x97' 151 index 3: b'\xab' 171 index 4: b'&' 38 index 5: b'f' 102 index 6: b'-' 45 index 7: b'\x81' 129 index 8: b'f' 102 index 9: b'f' 102 index 10: b'f' 102 index 11: b'f' 102 index 12: b'\x88' 136 index 13: b'f' 102 index 14: b'\xf6' 246 index 15: b'7' 55
由於我們知道byte sequence嘛,顧名思義就是由一個個byte組成的長長一串,而byte本身就是以數字存在。上面的輸出結果表示對應的關係。
如果是\x開頭,代表是16進位,譬如 b'\x88' 就是16進位的byte,換算十進位則為136。
如果非\x開頭,對照ascii table會發現正好就是該字元與其ascii值對應。
參考文章
https://cloud.tencent.com/developer/article/1605567
沒有留言:
張貼留言