十六进制到int32 Big Endian

时间:2017-10-06 12:49:42

标签: python int32

我正在尝试将此十六进制转换为正确的INT32 Big Endian:

ffd7c477 --> -2636681

我检查了它应该如何看待:

http://www.scadacore.com/tools/programming-calculators/online-hex-converter/

我不知道如何转换它。这是纬度

的地方
payload = "1901000a03010aff01ff01300a01ffd7c4750016c0540322ed"
latitude = payload[28:36] = ffd7c477 

这里我得到了错误的无符号值:

int(binary[28:36], 16)

2 个答案:

答案 0 :(得分:1)

这有效POST active_users/document_type1/_search { "size": 0, "aggs": { "filtered_active_users_7_days": { "filter": { "range": { "last_activity": { "gte": "now-7d/d" } } }, "aggs": { "date_histogram_last_7_days": { "date_histogram": { "field": "last_activity", "interval": "day" } } } } } }

答案 1 :(得分:0)

由于Python默认使用处理器体系结构的字节顺序来处理数字(您可以使用sys.byteorder检查系统字节顺序),因此您必须明确指定要将给定值视为大端。 struct模块允许您执行此操作:

import struct, codecs
val = "ffd7c477"
struct.unpack("!i", codecs.decode(val, "hex"))

unpack的第一个参数:!表示将字节视为大端,i表示将字节视为int32值。