aar里各种字符和数据格式相互转换总结
By
admin
at 2017-12-10 • 0人收藏 • 3025人看过
四字节转换为浮点数方法一:
利用TCC编译器来调用C语言,通过C语言直接转换
//aardio调用C语言函数
var code = /****
#include <stdio.h>
#include <stdlib.h>
int func_c (const char *msg)
{
io_reopen(); //打开控制台窗口
unsigned char tempc[4];
tempc[0]=0x06;
tempc[1]=0x01;
tempc[2]=0xfe;
tempc[3]=0x43;
float tempf;
memcpy(&tempf,&tempc[0],4);
printf("%f\n",tempf);
return 0;
}
****/
import console;
import tcc;
var vm = tcc( ); //创建TCC编译器
vm.compile(code); //编译C源码
//调用C函数
var ret = vm.func_c(
string.fromto("测试一下") //注意tcc是ansi编码,aardio是utf8,需要转换一下
);
console.log( "C函数返回值", ret )
console.pause();
6 个回复 | 最后更新于 2017-12-10
//进制转换
//用格式化函数可以实现数字的进制转换
io.open()
//数字转换为二进制字符串
str = string.format("%b",23 );
io.print(str)
//二进制字符串转换为数字
n = tonumber(str,2)
io.print(n)
//数字转换为八进制字符串
str = string.format("%o",23 );
io.print(str)
//八进制字符串转换为数字
n = tonumber(str,8)
io.print(n)
//数字转换为十六进制字符串
str = string.format("%x",23 );
io.print(str)
//十六进制字符串转换为数字
n = tonumber(str,16)
io.print(n)
execute("pause")
import console;
//acsii转换为HEX码
var Hex=function(data,len){
var str="";
for(i=1;len;1){
str = str++" "++string.right(string.format("%X", data[ i ]),2);//默认转换成有符号字节,因此取最右边两位 HEX码
}
return str;
}
//hex转ascii
var Ascii=function(data){
var data = string.replace(data," ","");
var str="";
for(i=1;#data;2){
str =str ++ string.pack( eval("0x"++data[[i]]++data[[i+1]] ));
}
return str;
}
var ssss = "64 65 66 67 68 69";
console.log(Ascii(ssss))
console.log(eval("0x64"))
console.log(string.pack(eval("0x64")))
console.pause(true);
登录后方可回帖





经过qq群群主大K指导,下面的方式更简洁:
利用结构体转换函数可以实现
import console; console.open() console.log( raw.convert({byte b[4] = {0x06;0x01;0xfe;0x43}},{float f}).f ) console.pause();效果和上面的一样