我在向Lua中的二進制文件寫入字符串時遇到問題。有一個現有的例子,我試着修改它。請看:在Lua中將字符串寫入二進制文件
function StringToBinary()
local file = io.open("file.bin", "wb")
local t = {}
local u = {}
local str = "Hello World"
file:write("string len = " ..#str ..'\n')
math.randomseed(os.time())
for i=1, #str do
t[i] = string.byte(str[i])
file:write(t[i].." ");
end
file:write("\n")
for i=1, #str do
u[i] = math.random(0,255)
file:write(u[i].." ");
end
file:write("\n"..string.char(unpack(t)))
file:write("\n"..string.char(unpack(u)))
file:close()
end
file:write(t[i].." ")
和file:write(u[i].." ")
寫有整數值兩個表。然而,我最後兩次寫道:unpack(t)
顯示原始文本,而unpack(u)
顯示二進制文件。
這可能是string.byte(str[i])
這是錯誤的。我應該用什麼替換它?我錯過了什麼嗎?
有什麼問題比其他編制?你的問題在哪裏? –
如果此代碼正常工作(編譯問題除外),就像您在下面評論的一樣,請編輯您的問題。你的問題並不清楚哪些問題,人們可能會感到困惑,認爲這是錯誤的,仍然需要解決。 –
(語義點)Lua字符串是二進制的:它們是不可變的,計數的字節序列。沒有假設也沒有要求它們是來自任何字符集的字符的一種或任何編碼。當然,函數可以以其他方式處理它們。 –