루아에서 이진수로 문자열을 쓰는 데 문제가 있습니다. 기존 예제가 있으며 수정하려고했습니다. 보세요 :루아에서 이진수로 문자열 쓰기
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])
일 것입니다. 무엇으로 대체해야합니까? 내가 놓친 게 있니?
문제는 컴파일이 아닌 다른 있습니까? 당신의 질문은 어디에 있습니까? –
아래에서 언급 한 것처럼이 코드가 잘 작동하면 (컴파일 문제 제외) 질문을 이렇게 수정하십시오. 귀하의 질문은 어떤 종류의 문제인지 명확하지 않았으며, 사람들은 그것이 잘못되었다고 혼동되어 여전히 풀어야 할 필요가 있습니다. –
(Semantic point) 루아 문자열은 바이너리입니다 : 그것은 불변의 카운트 된 바이트 시퀀스입니다. 문자 세트의 문자를 하나 또는 모든 문자로 인코딩한다는 가정이나 요구 사항은 없습니다. 기능은 물론, 그들을 다르게 취급 할 수 있습니다. –