Я играю в Feed The Beast и хотел бы создать сеть. Я уже могу отправлять двоичные коды с одного компьютера на другой. Метод, чтобы получить двоичный код из строки заключается в следующем:Двоичный код для строки
function toBinString(s)
bytes = {string.byte(s,i,string.len(s))}
binary = ""
for i,number in ipairs(bytes) do
c = 0
while(number>0) do
binary = (number%2)..binary
number = number - (number%2)
number = number/2
c = c+1
end
while(c<8) do
binary = "0"..binary
c = c+1
end
end
return binary
end
function toBin(s)
binary = toBinString(s)
ret = {}
c = 1
for i=1,string.len(binary) do
char = string.sub(binary,i,i)
if(tonumber(char)==0) then
ret[c] = 0
c = c+1
elseif(tonumber(char)==1) then
ret[c] = 1
c = c+1
elseif(tonumber(char)) then
print("Error: expected \'0\' or \'1\' but got \'",char,"\'.")
end
end
return ret
end
Как я могу получить строку, которая была использована в string.byte(...)
?
о 'байт = ...' вещь: он работал для меня (в игре), так что я имел никаких проблем: D В любом случае, я собираюсь использовать ваш код :) Большое спасибо. – mezzodrinker
В 'bytes = ...' 'string.len (s)', вероятно, ОК, но 'i' никогда не определялся раньше. Это должно произойти из какой-то другой части вашего кода, я думаю :) – catwell
Может быть, да. Я думаю, что Ctrl + C был причиной того, что 'i' был там: D – mezzodrinker