簡體   English   中英

在Lua中將字符串轉換為字節並寫入文件

[英]Converting string to bytes and writing to file in Lua

我正在嘗試將字符串數據轉換為字節並將其寫入文件。

我已經嘗試了一些方法,但是沒有在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

您想以一種方式使用string.char

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中的字符串可能包含您想要的任何字節,包括空字節。 請參閱值和類型

提示:使用string.char將數字轉換為字節:

file:write(string.char(tonumber(data:sub(i,i+1))))

如果字符串包含十六進制,請使用tonumber(...,16)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM