Redis (хранилище значений ключей) поддерживает сценарии lua - он выполняет сценарий на сервере. Я взаимодействую с Redis с помощью Java-клиента. Я передаю байтовый массив в lua, а в lua мне нужно преобразовать его в int или строку.
Ниже приведен фрагмент кода Java
byte[] exclScore = ByteBuffer.allocate(8).putDouble(1.5).array();
args.add(exclScore);
args - это ArrayList типа byte []
Ниже приведен скрипт 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-клиентом, а оценка - последняя запись. Я проверил тип (byteScore), и он оказался строковым. tonumber () возвращает ноль (это ошибка, которую я получаю, так как я умножаю ее на 2)
Есть ли в любом случае, когда мы можем преобразовать этот байтовый массив в двойное или строковое представление этого двойного (1.5) в lua? Обратите внимание, что мы не можем использовать внешние библиотеки lua внутри скриптов redis.
Любая помощь приветствуется. Заранее спасибо.