⑴ 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]='