gpt4 book ai didi

java - 在lua中将字节数组转换为double

转载 作者:可可西里 更新时间:2023-11-01 11:04:49 25 4
gpt4 key购买 nike

Redis(键值存储)支持 lua 脚本 - 它在服务器上执行脚本。我正在使用 Java 客户端与 Redis 交互。我将字节数组传递给 lua,在 lua 中,我必须将其转换为 int 或字符串。

以下是java代码片段

byte[] exclScore = ByteBuffer.allocate(8).putDouble(1.5).array();
args.add(exclScore);

args 是 byte[] 类型的 ArrayList

以下是我试过的lua脚本

byteScore = table.remove(ARGV)
size = string.len(byteScore)
x = string.sub(byteScore,1,1)
local output = 0
for i = 1,size do
bit = tonumber(string.sub(byteScore,i,1))
val2 = bit * (2 ^ i)
output = output + val2
end
return output

ARGV 是接收 java 客户端发送的所有参数的表,分数是最后一个条目。我检查了type(byteScore),结果是string。 tonumber() 返回一个 nil(这是我得到的错误,因为我将它乘以 2)

无论如何我们可以在 lua 中将这个字节数组转换为 double 或字符串表示形式的 double (1.5)?请注意,我们不能在 redis 脚本中使用任何外部 lua 库。

感谢任何帮助。提前致谢。

最佳答案

Lua 不是低级语言。它不知道如何处理字节数组。

理论上,您可以编写二进制到 double 的解码器(尽管这很难,因为 Lua 5.1 没有任何位操作的东西)。但是你的时间最好花在尝试以 Lua 理解的形式传递 Lua 数据上。 Lua 可以将字符串转换为数字,因此您可以向 Lua 传递该数字的字符串表示形式。

在 Lua 之外清理您的数据。

关于java - 在lua中将字节数组转换为double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303473/

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