python-3.x - 将有符号数转换为 little endian 格式的 16 位二进制值
问题描述
我需要将包含有符号和无符号整数的数组转换为小端格式的二进制值。这是我尝试过的。我无法将大端转换为小端。
data = [-6, -24, -37, -45, -52, -54, -54, -51, -48, -47]
for i in data:
if (i<0):
values.append(bin(i & 0xffff).reverse())
else:
values.append(bin(i).reverse())
我得到的输出是
['0b1111111111111010', '0b1111111111101000', '0b1111111111011011', '0b1111111111010011', '0b1111111111001100', '0b1111111111001010', '0b1111111111001010', '0b1111111111001101', '0b1111111111010000', '0b1111111111010001']
更新
检查转换是否正确。我尝试将生成的二进制转换回整数。它给了我错误的结果。
print("Input {}".format(data))
#integer to little endian binary
values = [x.to_bytes(2, byteorder='big', signed=True) for x in data]
reinterpreted = [int.from_bytes(x, byteorder='little', signed=True) for x in values]
for i in reinterpreted:
if (i<0):
final.append(bin(i & 0xffff))
else:
final.append(bin(i))
print("Binary {}".format(final))
#little endian binary to integer
for i in final:
integerValue.append(int(i, base=2))
print("Recalculate input {}".format(integerValue))
Input [-6, -24, -37, -45, -52, -54, -54, -51, -48, -47]
Binary ['0b1111101011111111', '0b1110100011111111',
'0b1101101111111111', '0b1101001111111111', '0b1100110011111111',
'0b1100101011111111', '0b1100101011111111', '0b1100110111111111',
'0b1101000011111111', '0b1101000111111111']
Recalculate input [64255, 59647, 56319, 54271, 52479, 51967, 51967,
52735, 53503, 53759]
解决方案
这完美地工作。将整数数组转换为 16 位有符号数组,反之亦然并比较结果。
#integer to little endian binary
values = [x.to_bytes(2, byteorder='big', signed=True) for x in ECG_data]
reintermediate = [int.from_bytes(x, byteorder='little', signed=True) for x in values]
for i in reintermediate:
if (i<0):
final.append(bin(i & 0xffff)[2:])
else:
final.append(bin(i)[2:])
#little endian binary to integer
data = [(int(i, base=2).to_bytes(2, "little")) for i in final]
reinterpreted = [int.from_bytes(x, byteorder='big', signed=True) for x in data]
if ((reinterpreted == ECG_data) == True):
print("Interpretation is Proper")
else:
print("Interpretation is wrong")
推荐阅读
- regex - 一起发现时,正则表达式不匹配两个字符
- terragrunt - Terragrunt:读取上游变量
- python - 无法导入“硒”pylint(导入错误)(解决方案)
- python - Python循环乘以项目
- pandas - 如何编码具有很多值的 CATEGORICAL_COLUMNS?
- python - 使用我的 MacBook 时无法在 Visual Studio Code 中运行代码
- java - 登录具有 ReCaptcha 的网站
- python-3.x - 如何在booking.com中抓取酒店类别类型?
- android - 使用 Tasker 将文件发送到带有意图的应用程序
- mysql - 向 API 用户公开记录 ID 的最佳实践