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