二进制数据处理和基本数据类型转换工具类 JHex

码农软件 · 软件分类 · 其他开发相关 · 2019-10-16 16:42:41

软件介绍

JHex工具类

简介

Java不是一个完全面向对象的编程语言,因为其有基本数据类型的存在,在Java中所有的数值类的基本数据类型都是有符号数,而在嵌入式系统常用的C语言编程的数据则分为有符号和无符号两种类型,通常用于数据通讯与数据交互的都是无符号类型,尤其是使用SerialPort或者LibUSB这种接口与PC进行数据传输时尤为明显。

以SerialPort为例,通常嵌入式编程中使用8bit数据位为一帧的方式传送数据,通常为无符号数,比如一个float类型占4个字节,通常需要接受4帧才能恢复出一个float类型的数据,Java在这方面就显得有些力不从心了,虽然有DataInputStream这种类或者某些包装类的方法可以解决这个问题,但通常要么就是花费比较大的资源要么要么就是功能不够全面并且现在很多JDK里的数据转化存在BUG,比如Integer.parseInt(num,radix)这种方法如果你粘贴进去负数的二进制进去,那么就会产生异常了。

使用JHex工具类可以解决这些问题,比如你可以轻松的使用toFloat(byte[] arr)这种函数把4帧byte数据转化成一个float类型,你可以使用getBitValue(int number,int bitAt)函数获取数值在某一个二进制位上的值等等 ,或者使用toByteArray(int number)将一个整型数转化成4帧byte数组并后续通过串口发送出去。

现版本的主要功能

1. 将整形、浮点型等多字节数据转化成byte类型数组。

2. 逆向变换将byte数组转化成相应的整形或者浮点型数据。

3. 将任意数转化成二进制或者十六进制的字符串。

4. 位运算,提取某些位的值或者改变某些位的值得到新值。

5. 任意进制字符串之间的转化。

6. 有符号和无符号数之间的转化。

代码样例

/*
 * 将一个整型数转化成4字节的byte数组
 */
public static byte[] toByteArray(int number) {
	byte[] bytes = new byte[4];
	for (int i = 0; i < 4; i++) {
		bytes[i] = (byte) (number >>> (24 - i * 8));
	}
	return bytes;
}

使用范例

@Test
public void test() {
	int number = 1024;
	byte[] byteArray = JHex.toByteArray(number);
	System.out.println(Arrays.toString(byteArray));
}

输出结果:

本文地址:https://codercto.com/soft/d/16895.html

人人都在晒,凭什么你出彩

人人都在晒,凭什么你出彩

【美】奥斯丁•克莱恩 / 张舜芬、徐立妍 / 北京联合出版公司 / 2015-4 / 38.00

1. 《纽约时报》、亚马逊畅销书排名第1位、好评如潮的创意营销书。《出版人周刊》称其在社交网络时代“在安全范围内提供了实用的自我营销策略”。 2. TED演讲者创意分享:晒对了,全世界都为你点赞:别人在朋友圈、微博晒自拍、晒孩子、晒吃喝,你来晒创意、晒灵感、晒工作、晒收获,发出自己的声音,找到伙伴,机会也会主动找上门! 3. 10堂创意课+手绘涂鸦,所有人都能轻松读完、迅速学会的创意小......一起来看看 《人人都在晒,凭什么你出彩》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具