Advertisement
uriid1

10 to 16 LUA

Apr 2nd, 2021 (edited)
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.05 KB | None | 0 0
  1. function ten2_16(n)
  2.     local div
  3.     local mod = {}
  4.    
  5.     local t16num = { [10] = "A", [11] = "B", [12] = "C", [13] = "D", [14] = "E", [15] = "F" }
  6.    
  7.     -- Делим
  8.     div = math.floor(n / 16)
  9.    
  10.     -- Получаем остаток от деления
  11.     local rmod = math.floor(n % 16)
  12.     mod[1] = rmod < 9 and rmod or t16num[rmod]
  13.    
  14.     -- Если результат деления больше 15 делим еще
  15.     local i = 1
  16.     while div > 15 do
  17.        
  18.         local _2i = i + 1
  19.         -- Остаток от деления и добавляем букву
  20.         mod[_2i] = math.floor( div % 16 )
  21.         if mod[_2i] > 9 then mod[_2i] = t16num[mod[_2i]] end
  22.        
  23.         -- Продолжаем делить
  24.         div = math.floor( div / 16 )
  25.        
  26.         i = _2i
  27.     end
  28.    
  29.     -- Преобразовываем в тип понимаемый для lua
  30.     local str = "0x"..( div > 9 and t16num[div] or div )
  31.     for i = #mod, 1, -1 do
  32.         str = str..mod[i]
  33.     end
  34.    
  35.     return str
  36. end
  37.  
  38. n = 123456789101112130
  39. print( "В 16-ой: "..ten2_16(n) )
  40. print( "В 10-ой: "..tonumber(ten2_16(n)) )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement