当前位置:首页 » 网页前端 » 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