Получение подстрок в 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.

Другие вопросы по тегам