String 在Lua中将字符串转换为字节并写入文件

String 在Lua中将字符串转换为字节并写入文件,string,lua,byte,String,Lua,Byte,我正在尝试将字符串数据转换为字节并写入文件 我已经尝试了一些方法,但是在hexdump中没有看到00,而是在文件中看到0x30,它是字符0的十六进制值 以下是我写的: local data = "000000010000000100000004000000080000000100000000" for i=1,#data,2 do file:write(tonumber(data:sub(i,i+1))) end io.close(file) 当我转储文件时,我得到以下信息: 000000

我正在尝试将字符串数据转换为字节并写入文件

我已经尝试了一些方法,但是在hexdump中没有看到00,而是在文件中看到0x30,它是字符0的十六进制值

以下是我写的:

local data = "000000010000000100000004000000080000000100000000"
for i=1,#data,2 do
  file:write(tonumber(data:sub(i,i+1)))
end
io.close(file)
当我转储文件时,我得到以下信息:

0000000 30 30 30 31 30 30 30 31 30 30 30 34 30 30 30 38  
0000010 30 30 30 31 30 30 30 30  
0000018
预计:

0000000 00 00 00 01 00 00 00 01 00 00 00 04 00 00 00 08  
0000010 00 00 00 01 00 00 00 00  
0000018
提示:用于将数字转换为字节:

file:write(string.char(tonumber(data:sub(i,i+1))))
如果字符串包含十六进制,请使用tonumber…,16。

您希望以一种方式使用:

local data = "000000010000000100000004000000080000000100000000"
for i=1,#data,2 do
  file:write(string.char(tonumber(data:sub(i,i+1), 16)))
end
io.close(file)
或其他:

local data = string.char(0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,8,0,0,0,1,0,0,0,0)
file:write(data)
io.close(file)
请注意,Lua中的字符串可能包含您想要的任何字节,包括空字节。请参阅。

使用文件:关闭以保持一致性。