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


Фотография

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

lib bits

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,82%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 08 Июль 2015 - 00:23

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


  • 1Ridav, Alex, Doob и еще 1 это нравится

#2 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 08 Июль 2015 - 09:05

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



#3 Оффлайн   Krutoy

Krutoy
  • Гуру
  • Сообщений: 499
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 08 Июль 2015 - 10:47

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

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

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

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

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


  • Asummonster это нравится

#4 Оффлайн   NEO

NEO
  • Автор темы
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,82%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 08 Июль 2015 - 11:57

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

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

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

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

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

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

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


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

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


Сообщение отредактировал NEO: 08 Июль 2015 - 11:54


#5 Оффлайн   swg2you

swg2you
  • Пользователи
  • Сообщений: 268
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 08 Июль 2015 - 12:02

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

  • неясно зачем "бинарный вид" хранить в таблице. это же сколько килобайт на бит будет?
  • неясно зачем вообще писать для него функцию, если луа и так умеет работать с битами.
  • неясно зачем переводить делением/возведением в степень о_О, если есть сдвиг и маска
  • неясно зачем 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'))

  • Krutoy это нравится

#6 Оффлайн   NEO

NEO
  • Автор темы
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,82%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 08 Июль 2015 - 12:09

Кто может подсказать, хочу сделать поддержку 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:  Тебе не ясно, твои проблемы, я люблю изучать, вот и пишу.



#7 Оффлайн   swg2you

swg2you
  • Пользователи
  • Сообщений: 268
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 08 Июль 2015 - 12:35

Кто может подсказать, хочу сделать поддержку 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) -- побайтовое представление в нёх

  • Krutoy и Doob это нравится





Темы с аналогичным тегами lib, bits

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных