gpt4 book ai didi

python - 如何从 Python 中字符串的前 8 个字节计算 double float ?

转载 作者:太空狗 更新时间:2023-10-30 00:07:27 25 4
gpt4 key购买 nike

尝试从 Python 中的 UTF-8 编码字符串对象中获取 double 浮点分数。这个想法是获取字符串的前 8 个字节并创建一个 float,这样按分数排序的字符串将根据它们的前 8 个字节(或者可能是它们的前 63 个)按字典顺序排序位,在强制它们全部为正以避免符号错误之后)。

例如:

get_score(u'aaaaaaa') < get_score(u'aaaaaaab') < get_score(u'zzzzzzzz')

我尝试使用左移位和 XOR 计算整数分数,但我不确定如何将其转换为 float 值。我也不确定是否有更好的方法来做到这一点。

应该如何计算字符串的分数才能满足我之前指定的条件?

编辑:字符串对象是 UTF-8 编码的(根据@Bakuriu 的评论)。

最佳答案

float 不会为您提供 64 位精度。请改用整数。

def get_score(s):
return struct.unpack('>Q', (u'\0\0\0\0\0\0\0\0' + s[:8])[-8:])[0]

在 Python 3 中:

def get_score(s):
return struct.unpack('>Q', ('\0\0\0\0\0\0\0\0' + s[:8])[-8:].encode('ascii', 'error'))[0]

编辑:

对于 float,有 6 个字符:

def get_score(s):
return struct.unpack('>d', (u'\0\1' + (u'\0\0\0\0\0\0\0\0' + s[:6])[-6:]).encode('ascii', 'error'))[0]

关于python - 如何从 Python 中字符串的前 8 个字节计算 double float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19550008/

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