Advertisement
Rochet2

uint16 to two uint8

Jun 27th, 2015
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.87 KB | None | 0 0
  1. local id = 0 -- number between 0 and 2^16-767
  2.  
  3. local id, id2, l, r, l2, r2, id2, high
  4. function test()
  5.     for i = 0, 2^16-1-766 do
  6.         id = i
  7.         -- code to chars
  8.          high = math.floor(id / 254)
  9.          l = high +1
  10.          r = id - high * 254 +1
  11.        
  12.         -- insert to text
  13.         local header = string.char(l)..string.char(r)
  14.        
  15.         -- extract from text
  16.         l2 = string.byte(header:sub(1,1))
  17.         r2 = string.byte(header:sub(2,2))
  18.        
  19.         -- decode from chars
  20.         id2 = (l2-1)*254 + r2-1
  21.        
  22.         if id ~= id2 or l == 0 or r == 0 or l2 == 0 or r2 == 0 then
  23.             error("values do not match")
  24.         end
  25.     end
  26. end
  27.  
  28. local success, err = pcall(test)
  29. if not success then
  30.     print(success, err)
  31.     print("errored with", id, id2, l, r, l2, r2, id2, high)
  32. else
  33.     print("success :)")
  34. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement