Natt 0 Опубликовано: 25 сентября, 2019 Только начинаю изучать lua. Есть задание написать программу, которая разбивает число на 2 байта. Пробовала так, но выдает ошибку unexpected symbol near '>' в 4 строке. Подскажите пожалуйста что ни так. function dump_i16(n) local b1 = (n >> 8) & 0xff local b1 = (n >> 0) & 0xff return b1, b2 end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 25 сентября, 2019 @Natt Похоже, приведённый код запущен в Lua5.2, там нет операций сдвига. В Lua5.3 должно работать. $ lua5.3 Lua 5.3.1 Copyright (C) 1994-2015 Lua.org, PUC-Rio > = (100500>>8) & 0xff 136 $ lua5.2 Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio > = (100500>>8) & 0xff stdin:1: unexpected symbol near '>' Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 25 сентября, 2019 Ах, да. Нагляднее же можно сделать: $ echo 'print( (100500>>8) & 0xff )' | lua5.3 136 $ echo 'print( (100500>>8) & 0xff )' | lua5.2 lua5.2: stdin:1: unexpected symbol near '>' Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Natt Автор вопроса 0 Опубликовано: 25 сентября, 2019 @eu_tomat Большое спасибо, разобралась Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 26 сентября, 2019 Есть операции в модуле bit32 - rshift и lshift, работают в обоих версиях. Только символьные работают почти в два раза быстрее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 26 сентября, 2019 18 минут назад, Doob сказал: Есть операции в модуле bit32 - rshift и lshift, работают в обоих версиях. Только символьные работают почти в два раза быстрее. Добавлю, что rshift и lshift являются не операциями, а функциями. Поэтому и работать они должны медленнее операторов. Но, конечно, в современных языках с возможностью перегрузки операторов эта грань довольно тонка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Только начинаю изучать lua. Есть задание написать программу, которая разбивает число на 2 байта. Пробовала так, но выдает ошибку unexpected symbol near '>' в 4 строке. Подскажите пожалуйста что ни так.
function dump_i16(n)
local b1 = (n >> 8) & 0xff
local b1 = (n >> 0) & 0xff
return b1, b2
end
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах