OTS Fans

Witamy Na OTS Fans, Przeczytaj Regulamin lub Zarejestruj się.


#1 2011-04-17 07:45:59

 Wielki Buch

Założyciel

Skąd: Olecko
Zarejestrowany: 2011-04-14
Posty: 1014
Punktów :   
Czy Lubisz Tibie?: Only 7.6

Systemy liczbowe funkcje konwertujące.

Autorem Jest Miziak
Oryginalny Temat


Witam zrobiłem małego lib'a są to 3 funkcje math które przenoszą nas między różnymi systemami liczbowymi może komuś się przyda ale raczej nie w tibii chyba, że ktoś jest tak kreatywny to niech się pochwali
Funkcje:

Kod:

math.dth(liczba) -- konwersja liczby w systemie dziesiątkowym do systemu szesnastkowego(zwracany typ string)
tonumber(hexString) -- za pomocą prostej funkcji biblioteki standardowej otrzymujemy odwrotne działanie
math.dtb(liczba) -- konwersja liczby w systemie dziesiątkowym do systemu dwujkowego(zwracany typ string)
math.btd(binString) -- konwersja liczby binarnej w postaci tekstu na liczbę dziesiętną

Do functions.lua lub lib/50-function.lua dodajemy:

Kod:

math.dth = function(decint)
    local hex, strHex = "0123456789ABCDEF", ""
    repeat
        local mod = decint%16+1
        strHex = strHex .. hex:sub(mod, mod)
        decint = math.floor(decint/16)
    until decint == 0
return "0x" .. strHex:reverse()
end

math.dtb = function(decint)
    local binStr = ""
    repeat
        local mod = decint%2
        binStr = binStr .. (mod ~= 0 and "1" or "0")
        decint = math.floor(decint/2)
    until decint == 0
return binStr:reverse()
end

math.btd = function(binstr)
    local out = 0
    binstr = binstr:reverse()
    for i=binstr:len(), 1, -1 do
        out = out + (tonumber(binstr:sub(i,i))*(2^(i-1)))
    end
return out
end

Przykładowe zastosowanie:

#!/usr/bin/env lua

Kod:

do
math.dth = function(decint)
    local hex, strHex = "0123456789ABCDEF", ""
    repeat
        local mod = decint%16+1
        strHex = strHex .. hex:sub(mod, mod)
        decint = math.floor(decint/16)
    until decint == 0
return "0x" .. strHex:reverse()
end

math.dtb = function(decint)
    local binStr = ""
    repeat
        local mod = decint%2
        binStr = binStr .. (mod ~= 0 and "1" or "0")
        decint = math.floor(decint/2)
    until decint == 0
return binStr:reverse()
end

math.btd = function(binstr)
    local out = 0
    binstr = binstr:reverse()
    for i=binstr:len(), 1, -1 do
        out = out + (tonumber(binstr:sub(i,i))*(2^(i-1)))
    end
return out
end

print("Wybierz system liczbowy:\n1. Binarny(dwujkowy)\n2. Hexadecymalny(szesnastkowy)")
local wybor = tonumber(io.read())
print("Podaj liczbę do konwersji:")
local liczba = tonumber(io.read())
if(wybor == 1)then
    local bin = math.dtb(liczba)
    print(bin)
    print(math.btd(bin))
else
    local hex = math.dth(liczba)
    print(hex)
    print(tonumber(hex))

Prosty kalkulator typów, jeśli nie używasz linux'a pomińpierwszą linię (#!/usr/bin/env lua).

Mam nadzieje, że się przyda.


Dlaczego Tak Sie Stało że Tibie Poje***o Kto Wyjaśni Mi TO?
Tibia 8.7+ to DNO

Offline

 

Stopka forum

RSS
Powered by PunBB 1.2.23
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.freegamesjava.pun.pl www.basketbielany.pun.pl www.metin2smonety.pun.pl www.lareallife.pun.pl www.pkmn-game.pun.pl