Получение подстрок в LuaU
заголовок может выглядеть очень глупо, но я действительно не могу понять, в чем проблема, я создал пользовательскую функцию для подстроки, как в С++, потому что мне это нравится:
local function SubStr(String, Start, Count)
return String:sub(Start, Start+(Count-1))
end
Это код, который я использую, функция подстроки, похоже, работает для битовой глубины, ширины и высоты, хотя при чтении значений цвета кажется, что она смещается на тонну, и я не уверен, что это такое:
print("BitDepth", SubStr(Text, 1, 8))
print("Width", SubStr(Text, 9, 8))
print("Height", SubStr(Text, 17, 8))
Image["BitDepth"] = tonumber(SubStr(Text, 1, 8), 2)
Image["Width"] = tonumber(SubStr(Text, 9, 8), 2)
Image["Height"] = tonumber(SubStr(Text, 17, 8), 2)
for i = 1, Image["BitDepth"] do
Image["Colours"] = {};
Image["Colours"][i] = {};
print("RED", SubStr(Text, (24*i), 8))
print("BLUE", SubStr(Text, (24*i)+8, 8))
print("GREEN", SubStr(Text, (24*i)+16, 8))
print("ALPHA", SubStr(Text, (24*i)+24, 8))
Предполагаемые бинарные значения цвета, когдаi
"="1
, все должно быть11111111
Кстати, это читает следующую двоичную строку:
000000110000100000001000111111111111111111111111000000000000000000000000111111110000000000000000000000000000000011111111
2 ответа
Я внес некоторые изменения; проверить это. Первое смещение начинается с 25, а второе смещение начинается с кратных 32.
-- New v**strong text**ariables
offset = 25
count = 0; -- count is essentially (i - 1)
for i = 1, Image["BitDepth"] do
Image["Colours"] = {};
Image["Colours"][i] = {};
print(i)
-- first_offset + second_offset + third_offset
print("RED", SubStr(Text, offset + (32*count), 8))
print("BLUE", SubStr(Text, offset + (32*count)+8, 8))
print("GREEN", SubStr(Text, offset + (32*count)+16, 8))
print("ALPHA", SubStr(Text, offset + (32*count)+24, 8))
count = count + 1
end
3x8 равно 24. Значит, следующее значение начинается с 25, а не с 24.