當前位置:首頁 » 網頁前端 » lua腳本10進制轉62進制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

lua腳本10進制轉62進制

發布時間: 2022-12-19 16:39:02

⑴ 10進制轉62進制能節約多少

能節約一個字元的長度。
十進制整數轉換為62進制,可以顯著減少字元串長度,62進制相比36進制還能再減少一個字元的長度。
0進制就是逢10進1的進位制數值統計方法,相對的還有2進制8進制16進制。

⑵ lua語言 如何將字元串整體轉換為一個十進制數據 而不按照每個字元轉為若干個十進制數

function HexDumpString(str,spacer)
return (
string.gsub(str,"(.)",
function (c)
return string.format("%02X%s",string.byte(c), spacer or "")
end)
)
end

⑶ 62進制轉10進制

本章節分享兩段代碼實例,它們分別實現62進制和10進制的相互轉換。
一.10進制轉換為62進制:
[JavaScript] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
function string10to62(number){
var chars=''.split('');
var radix=chars.length;
var qutient=+number;
var arr=[];
do{
mod=qutient % radix;
qutient=(qutient - mod) / radix;
arr.unshift(chars[mod]);
}
while (qutient);
return arr.join('');
}
二.62進制轉換為10進制:
[JavaScript] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
function string62to10(number_code){
var chars='';
var radix=chars.length;
var number_code = String(number_code);
var len=number_code.length;
var i=0;
var origin_number=0;
while(i<len){
origin_number+=Math.pow(radix, i++)*chars.indexOf(number_code.charAt(len - i) || 0);
}
return origin_number;
}

⑷ 10進制轉為2進制、8進制、16進制的公式

方法如下:

1、十進制整數轉二進制數方法:除以2取余數,逆序排列(除二取余法)。

具體做法:用2整除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為小於1時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。

以23為例,步驟如下:

23/2=11.......1

11/2=5.........1

5/2=2............1

2/2=1............0

1/2=0............1

則23(十進制)=10111(二進制)。

2、十進制整數轉八進制數方法:除以8取余,逆序排列(除8取余法)。

具體做法:用8整除十進制整數,可以得到一個商和余數;再用8去除商,又會得到一個商和余數,如此進行,直到商為小於1時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。

以214為例,步驟如下:

214/8=26.......6

26/8=3............2

3/8=0...............3

則214(十進制)=326(八進制)。

3、十進制整數轉十六進制數方法:除以16取余,逆序排列(除16取余法)

具體做法:用16整除十進制整數,可以得到一個商和余數;再用16去除商,又會得到一個商和余數,如此進行,直到商為小於1時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。

同時,當余數為10用A表示,11用B表示,12用C表示,13用D表示,14用E表示,15用F表示。

以214為例,步驟如下:

214/16=13.........6

13/16=0...........13

則214(十進制)=D6(十六進制)。

(4)lua腳本10進制轉62進制擴展閱讀:

二進制間的計算是逢二進一(其他進制同理),

其加法: 0+0=0,0+1=1 , 1+0=1, 1+1=10 。如:0110+0101=1011

其乘法:0×0=0,1×0=0,0×1=0,1×1=1。

其減法:0-0=0,1-0=1,1-1=0,0-1=1。

其除法:0÷1=0,1÷1=1。

計算機中的十進制小數用二進制通常是用乘二取整法來獲得的。

比如0.45換算成二進制就是:

0.45 × 2 = 0.9 取0,留下0.9繼續乘二取整

0.9 × 2 = 1.8 取1, 留下0.8繼續乘二取整

0.8 × 2 = 1.6 取1,留下0.6繼續乘二取整

0.6 × 2 = 1.2 取1, 留下0.2繼續乘二取整

0.2 × 2 = 0.4 取0, 留下0.4繼續乘二取整

0.4 × 2 = 0.8 取0, 留下0.8繼續乘二取整

.......

一直循環,直到達到精度限制才停止(如:取6位則為011100)。

⑸ 用LUA如何實現在IEEE754標准下的16進制和10進制浮點數的相互轉換方法

function tobinary32(num)
local tmp = num
local str = ""
repeat
if tmp % 2 == 1 then
str = str.."1"
else
str = str.."0"
end
tmp = math.modf(tmp/2)
until(tmp == 0)
str = string.reverse(str)
local lens = string.len(str)
local as = 32 - lens
if as < 0 then

elseif as > 0 then
for i=1,as do
str = "0"..str
end
end

return str
end
function hexToFloat( hexString )
local tmpNum = tobinary32(tonumber(hexString,16))

local sign = string.sub(tmpNum,1,1)
sign = tonumber(sign)
local exponent = string.sub(tmpNum,2,9)
exponent = tonumber(exponent,2) - 127
local mantissa = string.sub(tmpNum,10)
mantissa = tonumber(mantissa,2)
for i=1,23 do
mantissa = mantissa / 2
end
mantissa = 1+mantissa
-- print(mantissa)
local result = (-1)^sign * mantissa * 2^exponent
return result
end

local tmp1 = "42788000"

print(hexToFloat(tmp1))
---------------------
作者:___Eirc
來源:CSDN
原文:https://blog.csdn.net/u013625451/article/details/96320498
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

⑹ Lua 讀取二進制文件並轉化為十六進制

最近在寫 Lua 腳本,需要讀取二進制文件並轉化為十六進制的字元串,C語言讀文件,返回的是字元串類型,Lua 返回的也是字元串類型(用的時候忘記去查類型了,導致這個地方浪費了很長的時間。。。),由於找解決方法找了蠻長時間的,所有在這里先記錄一下。

local function readAll(filePath)

--

local f = assert(io.open(filePath, "rb"))

local content = f:read("*all")

f:close()

return content

end

local function bytesToHexStr(filePath)

--

local content = readAll(filePath)

local result = ""

local len = string.len(content)

for i = 1, len do

local charcode = tonumber(string.byte(content, i, i));

local hexstr = string.format("%02X", charcode);

result = result .. hexstr

end

return result

end

有一個小問題,順便記錄一下,在讀取了二進制文件後,本想用print列印看看內容有沒有被讀出來,結果只列印了一部分,用 notepad++ 打開發現,文件有很多 NUL 的字元,原因是 print 在遇到 NUL 就結束列印了,囧o(╯□╰)o

十六進制轉二進制可以參考這個: Lua小程序:十六進制字元串和二進制數據間的轉換

⑺ 十進制轉六十進制怎麼算

寫出60進制每位上的基數,假設要轉換十進制數1210到六十進制,那麼寫基數:從個位1開始向左逐位寫,第1位是1,然後是60,接著是3600,每位都是右邊位乘以60,寫到比1210大為止:
3600 60 1
0 K A
用1210除以最高位3600得到商和余數=1210/3600=0[1210],將商寫到3600這位下面
用上步的余數繼續計算:1210/60=20[10],將20對應的符號寫到60這位下面
10/1=10[0],計算直到余數為0時停止,如果還有位沒計算,填0
假設用0~9,A~Z,a~x表示0~59的話十進制1210轉換成60進制為KA
用這個演算法只要在寫基數時乘以n,則可以將十進制轉換成n進制。

⑻ javascript如何輸入一個十進制數,並將其轉換成二進制數

以下函數可以將十進制數轉為二進制數:

#include<iostream>
#include<malloc.h>

#defineMAX33

usingnamespacestd;

/*十進制數轉換為二進制數(字元串表示)*/
char*decToBin(longnum);

intmain()
{
longdec=123456789;

cout<<"10進制數: "<<dec<<endl;
cout<<"2進制數: "<<decToBin(dec)<<endl;

return0;
}

/*十進制數轉換為二進制數(字元串表示)*/
char*decToBin(longnum)
{
char*arr;
chartemp;
inti,n;

arr=(char*)malloc(sizeof(char)*MAX);
n=0;
while(num>0)
{
arr[n++]=num%2+'0';
num/=2;
}

for(i=0;i<n/2;i++)
{
temp=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=temp;
}
arr[n]='';
returnarr;
}

1、十進制數是指各位數字全部由小於10的數字(0..9)組成的數值,如123、45678等。二進制數是指各位數字全部由小於2的數字(0..1)組成的數值,如10、1011等。將十進制數轉換為二進制數是將全部由小於10的數字組成的數值轉換為全部由小於2的數字組成的數值,如十進制數100轉換為二進制數為1100100。

2、將十進制數轉換為二進制數的演算法是採用輾轉取余法,即將待轉換數不斷除2取余,記錄余數,用新的商繼續除2取余,直到該數為零。由於余數小於2,故所有餘數組成的數值全部由0、1組成。再對這些余數進行逆置即可。

⑼ 新手求問lua能將十進制和十六進制數互相轉化嗎

可以的。

詳細方法如下:

str="0xBA"

十六進制轉到十進制

print(string.format("%d",str))

str="12345"

十進制轉到十六進制

print(string.format("%#x",str))

⑽ lua腳本怎麼編譯成二進制

luac的參數提供完整路徑,或者在lua文件所在目錄打開命令行
另外請確認已正確設置環境變數(如在cmd下直接luac可以運行,即提示no input files give即可)

比如lua文件在E:\f1\f2\f3\a.lua的話
cmd ->
luac e:\f1\f2\f3\a.lua
或者
在資源管理器中瀏覽到f2,然後shift+右鍵f3,在此打開命令行 (僅win7,xp貌似沒這選項),然後luac a.lua
又或者
cmd ->
e: --打開E盤
cd f1\f2\f3 --cd命令進入f3
luac a.lua