data = "000000000000000117c80378b8da0e33559b5997f2ad55e2f7d18ec1975b9717"
result1 = data.decode('hex')[::-1]
6,860,217,587,554,922,525,607,992,740,653,361,396,256,930,700,588,249,487,127
6,860,217,587,554,922,525,607,992,740,653,361,396,256,930,700,588,249,487,127
转换为位并反转其顺序(little-endian)并作为bitarray存储在result1
变量中?这是该代码究竟发生的事情还是我误解了什么?
那么result1
变量是一个比特阵列?
如果它只是一个整数变量,它怎么能保持那么长的十进制值?
答案 0 :(得分:0)
Strings in python,因此变量数据包含字符串。 您可以直接在python中检查变量的类型:
data = "000000000000000117c80378b8da0e33559b5997f2ad55e2f7d18ec1975b9717"
type(data)
输出
str
意味着变量是一个字符串。 当您在字符串上调用函数decode(' hex')时,您将获得另一个字符串:
data.decode('hex')
'\x00\x00\x00\x00\x00\x00\x00\x01\x17\xc8\x03x\xb8\xda\x0e3U\x9bY\x97\xf2\xadU\xe2\xf7\xd1\x8e\xc1\x97[\x97\x17'
原始字符串中的每个字符都被解释为十六进制数字,每对十六进制数字 - e.s. " 17" - 使用转义序列转换为十六进制字符\ x - 变为" \ x17"。
当你写" \ x41"你基本上告诉python将41解释为单个ASCII字符,其十六进制表示为41。
ASCII table包含与ascii字符关联的十六进制,十进制和八进制值。
如果您尝试例如
"48454C4C4F".decode('hex')
你获得字符串" HELLO"
最后当你在字符串上使用[:: - 1]时,你可以反转它:
"48454C4C4F".decode('hex')[::-1]
生成字符串" OLLEH"
您可以找到有关阅读python documentation的转义字符的详情。