Перейти к содержимому
NEO

Bits - библиотека для преобразования чисел,слов в бинарный вид,и наоборот.

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

Bits - библиотека для преобразования чисел,слов в бинарный вид,и наоборот.

Функции:

getBits(number,length) return table, возвращает число в двоичном виде, length - разрядность.

getNumber(bits:table) - превращает двоичное число в десятичное.

CharToBit(char,length) - превращает символ в двоичный вид,length - разрядность.

WordToBit(word,length) - превращает строку в двоичный вид,length - разрядность.

BitToWord(bits,length) - превращает двоичные код разрядностью length в строку. 

 

http://pastebin.com/4wu0P98s

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


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

Нео, хотя разметка кода и концепция хороша, наделал и глупостей.

- Глобальные переменные в локальном окружении. Причем с одинаковыми названиями

- Повсюду вызовы глобальных переменных - тоже тормозит производительность

- Нет полной поддержки юникода, некоторые функции используют string

- Последняя функция ничего не возвращает

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


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

Нео, хотя разметка кода и концепция хороша, наделал и глупостей.

- Глобальные переменные в локальном окружении. Причем с одинаковыми названиями

- Повсюду вызовы глобальных переменных - тоже тормозит производительность

- Нет полной поддержки юникода, некоторые функции используют string

- Последняя функция ничего не возвращает

Я так пишу :P , да забыл return word сделать.

Поправил окружение.

А где же методы NOT, OR, AND, XOR?

Не успел сделать.

Изменено пользователем NEO

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


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

это чой-то дюже специфическая библиотека получилась. 

  • неясно зачем "бинарный вид" хранить в таблице. это же сколько килобайт на бит будет?
  • неясно зачем вообще писать для него функцию, если луа и так умеет работать с битами.
  • неясно зачем переводить делением/возведением в степень о_О, если есть сдвиг и маска
  • неясно зачем CharToBit и WordToBit вместо одной str2bin

--==--

если нужно в двоичный и назад то проще как-то так:

function bin(n, l)
  local b=''
  for i=0,l or 31 do
    b=bit32.extract(n, i)..b
  end
  return b
end

function dec(b)
  local n=0
  for i=1, #b do
    n=bit32.replace(n, string.sub(b,i,i), #b-i)
  end
  return n
end

print(bin(196))
print(dec('11000100'))

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


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

Кто может подсказать, хочу сделать поддержку unicode, но проблема в том что unicode.byte нет, а каким образом код получить я пока не знаю.


 

это чой-то дюже специфическая библиотека получилась. 

  • неясно зачем "бинарный вид" хранить в таблице. это же сколько килобайт на бит будет?
  • неясно зачем вообще писать для него функцию, если луа и так умеет работать с битами.
  • неясно зачем переводить делением/возведением в степень о_О, если есть сдвиг и маска
  • неясно зачем CharToBit и WordToBit вместо одной str2bin

--==--

если нужно в двоичный и назад то проще как-то так:

function bin(n, l)
  local b=''
  for i=0,l or 31 do
    b=bit32.extract(n, i)..b
  end
  return b
end

function dec(b)
  local n=0
  for i=1, #b do
    n=bit32.replace(n, string.sub(b,i,i), #b-i)
  end
  return n
end

print(bin(196))
print(dec('11000100'))

:smile44:  Тебе не ясно, твои проблемы, я люблю изучать, вот и пишу.

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


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

Кто может подсказать, хочу сделать поддержку unicode, но проблема в том что unicode.byte нет, а каким образом код получить я пока не знаю.

:smile44:  Тебе не ясно, твои проблемы, я люблю изучать, вот и пишу.

 

drochish-nebos_86769936_orig_.jpg

 

unicode.byte - существовать не может в принципе, в utf-8 один символ может кодироваться последовательностью от 1 до 6 байт.

но unicode.byte и не нужен, в принципе.

local s='уникодэ'
local h=''

for i=1,#s do
  h=h..' '..string.format('%X', string.byte(s,i))
end

print(s, #s) --строка и её длина в байтах
print(h) -- побайтовое представление в нёх

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


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

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

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

Гость
Ответить в тему...

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

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

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

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

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


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