数值与进制

aardio中可使用自定义进制表示整数,表示的有效整数范围在正负 (2**53 - 1) 之间,64位无符号整数请使用 math.size64 表示 )

常用进制表示法

var dec = 10; //普通十进制数值,即使在前面加上0前缀仍然表示10进制数
var hex = 0xA5; //0x前缀表示一个十六进制数
var  num = -0; //字面值常量-0自动转换为0,但运算得到的-0其值不变

自定义进制表示法

自定义进制语法:

num = radix#number

如果一个数字包含#号,则#号前面是自定义进制(大于2小于36),#号后面是数值,10以上的数用a-z的大小写字母表示。

a = 2#010 //表示一个2进制数010
c = 36#Z7 //表示一个36进制数Z7


例如:
io.open()

io.print( 2#10000000000000000 /*aardio可以直接表示2进制数,1后面16个0*/ );
io.print( 2#10000000000000000 >>> 16 ,"65536右移16位变成了1")
io.print( 2#1010_1100 ) //自定义进制的数值也可以使用下划线作为数值分隔符

在字符串中使用数值与进制

在字符串中使用\转义符+数值表示字符(字符串必须置于单引号内)

str = '六进制字符 \x2A'; // \x前缀表示一个十六进制字符
str3 = '十进制字符 \65'; // \前缀表示一个十进制字符

参考:数据类型-字符串

格式化字符串函数中使用进制与数值

%b 二进制数
%x %X 大小写十六进制数
%o 八进制数
%d 十进制数


io.open(); //打开控制台窗口
io.print( string.format("%X",123) )
参考: 格式化字符串

转换进制

io.open()

var str =  tostring(123,16) //转换为十六进制字符串
var num = tonumber(str,16) //将十六进制字符串转换为数值

io.print(
	"二进制",tostring( 123,2) ,
	"八进制",tostring( 123,8) ,
	"十六进制",tostring( 123,16) ,
	"十进制",tostring( 123 ) 
);

将数值转换为字符串的tostring()函数,以及将字符串转换为数值的tonumber()函数,都可选使用第二个参数指定应用于转换的进制(2到36之间).