viceversa - videos de numeros binarios
Escribir números en un archivo en lua en formato binario (2)
Tengo una gran matriz con números que me gustaría escribir en un archivo.
Pero si hago esto:
local out = io.open("file.bin", "wb")
local i = 4324234
out:write(i)
Solo estoy escribiendo el número como una cadena para el archivo. ¿Cómo escribo los bytes correctos para el número a archivar? ¿Y cómo puedo leer más tarde?
Prueba esto
function writebytes(f,x)
local b4=string.char(x%256) x=(x-x%256)/256
local b3=string.char(x%256) x=(x-x%256)/256
local b2=string.char(x%256) x=(x-x%256)/256
local b1=string.char(x%256) x=(x-x%256)/256
f:write(b1,b2,b3,b4)
end
writebytes(out,i)
y también esto
function bytes(x)
local b4=x%256 x=(x-x%256)/256
local b3=x%256 x=(x-x%256)/256
local b2=x%256 x=(x-x%256)/256
local b1=x%256 x=(x-x%256)/256
return string.char(b1,b2,b3,b4)
end
out:write(bytes(0x10203040))
Funcionan para enteros de 32 bits y generan primero el byte más significativo. Adaptarse según sea necesario.
Podría usar lua struct para obtener un control más detallado sobre la conversión binaria.
local struct = require(''struct'')
out:write(struct.pack(''i4'',0x123432))