gpt4 book ai didi

python - 无法从 long 转换 float

转载 作者:行者123 更新时间:2023-12-01 04:18:23 25 4
gpt4 key购买 nike

我有可以从无符号字节流转换有符号值的代码。我能够实现这一目标。但是,当我尝试将其转换为 float 时,它不能简单地转换,而是向上舍入到下一个 int 值。以下是我的代码:

def byte2int(bstr, width=32):
"""
Convert a byte string into a signed integer value of specified width.
"""
val = sum(ord(b) << 8*n for (n, b) in enumerate(reversed(bstr)))
if val >= (1 << (width - 1)):
val = val - (1 << width)
return val

str1=('\x00\xff\xa6\x10\xff\xff\xa6\x11\xff\xff\xa6\x12\xff\xff\xa6\x13\xff\xff\xa6\x12\xff\xff\xa6\x11\xff\xff\xa6\x10\xff\xff\xa6\x09\xff\xff\xa6\x08')
res=['','','','','','']
k=4
for l in range(0,6):
for i in range (0,4):
res[l]+= str1[i+4*l+k]

Ch1 = (byte2int(res[0]))
print Ch1
print (type(Ch1))
print float(Ch1/100)

此代码的结果如下:

-23023
<type 'long'>
-231.0`

但我想以 -230.23 格式显示它。任何人都可以指导我。

最佳答案

将 int 100 更改为 long 100.0。这会起作用。看最后一行代码:

def byte2int(bstr, width=32):
"""
Convert a byte string into a signed integer value of specified width.
"""
val = sum(ord(b) << 8*n for (n, b) in enumerate(reversed(bstr)))
if val >= (1 << (width - 1)):
val = val - (1 << width)
return val
str1=('\x00\xff\xa6\x10\xff\xff\xa6\x11\xff\xff\xa6\x12\xff\xff\xa6\x13\xff\xff\xa6\x12\xff\xff\xa6\x11\xff\xff\xa6\x10\xff\xff\xa6\x09\xff\xff\xa6\x08')
res=['','','','','','']
k=4
for l in range(0,6):
for i in range (0,4):
res[l]+= str1[i+4*l+k]

Ch1 = (byte2int(res[0]))
print Ch1
print (type(Ch1))
print float(Ch1/100.0)

关于python - 无法从 long 转换 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com