Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bit = {}
- bit.uc = require("unicode")
- function bit.getBits(number,length)
- local bits = {}
- local res = {}
- while true do
- local tmp = number%2
- bits[#bits+1] = tmp
- number = (number-tmp)/2
- if number == 0 then break end
- end
- if #bits < length then
- for i=#bits,length-1 do
- bits[#bits+1] = 0
- end
- end
- len = #bits
- for i=len,1,-1 do res[#res+1] = bits[i] end
- return res
- end
- function bit.getNumber(bits)
- local number = 0
- local count = 0
- for i=#bits,1,-1 do
- number = number+bits[i]*math.pow(2,count)
- count = count+1
- end
- return number
- end
- function bit.CharToBit(char,length)
- if #char > 1 then return {} end
- return bit.getBits(string.byte(char),length)
- end
- function bit.WordToBit(word,length)
- local bits = {}
- for i=1,#word do
- t = bit.CharToBit(string.sub(word,i,i),length)
- for q=1,#t do
- bits[#bits+1] = t[q]
- end
- end
- return bits
- end
- function bit.BitToWord(bits,length)
- local tmp = {}
- local word = ""
- for i=1,#bits,length do
- for q=i,i+length-1 do
- tmp[#tmp+1] = bits[q]
- end
- word = word..bit.uc.char(bit.getNumber(tmp))
- tmp = {}
- end
- return word
- end
- return bit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement