Перейти к содержимому
  • 0
Natt

Разбиение числа на байты

Вопрос

Только начинаю изучать lua. Есть задание написать программу, которая разбивает число на 2 байта. Пробовала так, но выдает ошибку unexpected symbol near '>' в 4 строке. Подскажите пожалуйста что ни так. 

 function dump_i16(n) 

          local b1 = (n >> 8) & 0xff

          local b1 = (n >> 0) & 0xff

          return b1, b2

end

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

@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 '>'

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ах, да. Нагляднее же можно сделать:

$ echo 'print( (100500>>8) & 0xff )' | lua5.3
136
$ echo 'print( (100500>>8) & 0xff )' | lua5.2
lua5.2: stdin:1: unexpected symbol near '>'

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть операции в модуле bit32 - rshift и lshift, работают в обоих версиях. Только символьные работают почти в два раза быстрее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, Doob сказал:

Есть операции в модуле bit32 - rshift и lshift, работают в обоих версиях. Только символьные работают почти в два раза быстрее.

Добавлю, что rshift и lshift являются не операциями, а функциями. Поэтому и работать они должны медленнее операторов.

Но, конечно, в современных языках с возможностью перегрузки операторов эта грань довольно тонка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...