数值分析————从入门到跳楼(二)

将16进制的数值转换为各种需要的float、int类型

方法很简单:

public static Float str16ToFloat(String str){//字符串转float
        Float value = Float.intBitsToFloat(Integer.valueOf(str.trim(), 16));//trim()方法:删除字符串头尾的空白符
        return value;
    }

这里重点看一下intBitsToFloat(int bits):返回对应于给定位表示形式的 float 值。根据 IEEE 754 浮点“单一格式”位布局,该参数被视为浮点值表示形式。

而我们的数值接收的时候,大多数都只是一串字符串,因此需要用.valueOf()方法进行转换,此方法用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等。语法格式如下:

static Integer valueOf(int i)//i -- Integer 对象的整数。
static Integer valueOf(String s)//s -- Integer 对象的字符串。
static Integer valueOf(String s, int radix)//radix --在解析字符串 s 时使用的进制数,用于指定使用的进制数。

然后在主函数中循环调用就行了:

for (int i = 0; i<=287; i = i+8){
            char float_num[] = copyOfRange(eventArray,i ,i+8);//a为所有float参数的值(16位模式下)float:占4个字节,即8个16位数
            String str_num = String.valueOf(float_num);//s为将a的值转为字符串并送入方法中转为float数值
            float num = str16ToFloat(str_num);//转换得到的float结果
            char value_0[] =  String.valueOf(num).toCharArray();//将float结果转换为字符数组
            char value[] = {value_0[0],value_0[1],value_0[2]};//保留两位
            String valueFinal = String.valueOf(value);//转成字符串,方便传输
            if(i == 0){
                allValue[i] = valueFinal;
            }else {
                allValue[i/8] = valueFinal;//所有字符串值保留到一个数组内方便传输
            }
        }

可以发现,这个循环不是我们常见的“i++”这种自加类型的for循环,究其原因,是我们规定的数据类型为float,每个float类型的数据占4个字节,原始数据包的数值为16进制的,0.5字节/进制位,因此,每个数据就占8个数据包的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值