四字节转浮点数
import console;
var num = "aa 0b 00 52 44 50 52 01 01 52 70 a9 c1 1b"
//以上红色是数据,需要提取
var arrData = string.splitEx( string.trim(num) ,"\s");
//第一种方式:tonumber以16进制来操作
var ret1 = raw.convert({ byte b[]={tonumber(arrData[10],16);tonumber(arrData[11],16);tonumber(arrData[12],16);tonumber(arrData[13],16);} },{float f}).f;
//第二种方式:联合0x前缀
var ret2 = raw.convert({ byte b[]={0x52; 0x70; 0xa9; 0xc1;} },{float f}).f;
var ret3 = raw.convert({ byte b[]={"0x"++arrData[10];"0x"++arrData[11];"0x"++arrData[12];"0x"++arrData[13];} },{float f}).f;
console.log(ret1)
console.log(ret2)
console.log(ret3)
console.pause(true);
登录后方可回帖


利用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();