Как преобразовать 32-байтовый буфер в uint64 в lua?

Я пишу механизм для генерации уникального идентификатора, полученного из sha256. Я использую:

require 'sha2'

function getUint64ID( callId )
  local minimumValue = 100000000000000000
  local maximumValue = 999999999999999999

  outputHash = sha2.sha256hex(callId)
  print(outputHash .. "\n")

  local c1 = ""

  for a, b in outputHash:gmatch"(%x)(%x)" do
    hexTuple = tostring(a) .. tostring(b)
    intVal   = tonumber(hexTuple, 16)
    c1 = c1 .. string.char(intVal)
  end

  uint64ID = ( minimumValue + ( tonumber(c1) % ( maximumValue - minimumValue + 1 ) ) )

  print('uint64ID:')
  print(string.format("%18.0f",uint64ID))
end

getUint64ID("test")

Я получаю следующую ошибку в приведенном выше коде:

stdin:17: attempt to perform arithmetic on a nil value
stack traceback:
    stdin:17: in function 'getUint64ID'
    stdin:1: in main chunk
    [C]: ?

Как преобразовать 32-байтовый буфер символов (c1) в число uint64 в lua?

0 ответов

Другие вопросы по тегам