2015-12-08 19 views
2

如何在Python中通過多行定義一個很長的十六進制文字?例如。如何在多行上定義長十六進制文字?

p = 0xB10B8F96 A080E01D DE92DE5E AE5D54EC 52C99FBC FB06A3C6 
     9A6A9DCA 52D23B61 6073E286 75A23D18 9838EF1E 2EE652C0 
     13ECB4AE A9061123 24975C3C D49B83BF ACCBDD7D 90C4BD70 
     98488E9C 219A7372 4EFFD6FA E5644738 FAA31A4F F55BCCC0 
     A151AF5F 0DC8B4BD 45BF37DF 365C1A65 E68CFDA7 6D4DA708 
     DF1FB2BC 2E4A4371 

這將是很好,如果我可以保留空格或另一個分隔符像太。

+0

任何嘗試?.. –

+1

閱讀答案http://stackoverflow.com/questions/12385040/python-defining-an-integer-variable-over-multiple-lines和http://stackoverflow.com/questions/ 21879454 /如何轉換一個十六進制字符串到十六進制數將給你答案。 – Yavar

回答

1

這裏是一種嘗試,這節省了它作爲一個字符串,然後使用ast.literal_eval來計算實際數目:

from ast import literal_eval 

hex_string_literal = (
    "0xB10B8F96" "A080E01D" "DE92DE5E" "AE5D54EC" "52C99FBC" "FB06A3C6" 
     "9A6A9DCA" "52D23B61" "6073E286" "75A23D18" "9838EF1E" "2EE652C0" 
     "13ECB4AE" "A9061123" "24975C3C" "D49B83BF" "ACCBDD7D" "90C4BD70" 
     "98488E9C" "219A7372" "4EFFD6FA" "E5644738" "FAA31A4F" "F55BCCC0" 
     "A151AF5F" "0DC8B4BD" "45BF37DF" "365C1A65" "E68CFDA7" "6D4DA708" 
     "DF1FB2BC" "2E4A4371") 

p = literal_eval(hex_string_literal) 

定義字符串文字以上使用string literal concatenation

編輯

至於說通過@nneonneo在下面的評論,你也可以例如使用int(hex_string_literal, 16)int(hex_string_literal, 0)上面,這樣你就不必導入額外的事情。

+1

不需要'literal_eval'; 'int(x,16)'或'int(x,0)'將會很好。 – nneonneo

+0

@nneonneo這很酷,不知道:) –

1
p = int(''.join(''' 
    B10B8F96 A080E01D DE92DE5E AE5D54EC 52C99FBC FB06A3C6 
    9A6A9DCA 52D23B61 6073E286 75A23D18 9838EF1E 2EE652C0 
    13ECB4AE A9061123 24975C3C D49B83BF ACCBDD7D 90C4BD70 
    98488E9C 219A7372 4EFFD6FA E5644738 FAA31A4F F55BCCC0 
    A151AF5F 0DC8B4BD 45BF37DF 365C1A65 E68CFDA7 6D4DA708 
    DF1FB2BC 2E4A4371 
    '''.split()), 16) 

您可以使用int(str,16)來轉換十六進制。

相關問題