JHex

二进制数据处理和基本数据类型转换工具类
授权协议 GPL
开发语言 Java
所属分类 程序开发、 其他开发相关
软件类型 开源软件
地区 国产
投 递 者 章侯林
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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));
}

输出结果:

 相关资料
  • Python 中基本数据类型转换的方法有下面几个。 方法 说明 int(x [,base ]) 将x转换为一个整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字符串 repr(x ) 将对象 x 转换为表达式字符串 eval(str ) 用来计算在字符串中的有效 Python 表达式,并返回一个对象 tu

  • 原文: http://exploringjs.com/impatient-js/ch_typed-arrays.html 29.1。 API 的基础知识 Web 上的大量数据是文本:JSON 文件,HTML 文件,CSS 文件,JavaScript 代码等.JavaScript 通过其内置字符串很好地处理这些数据。 但是,在 2011 年之前,它没有很好地处理二进制数据。 2011 年 2 月 8

  • 问题内容: 有没有一种类型或方式以二进制级别在oracle中存储数据。我对表中的dml和pl / sql的操作都感兴趣。 当前所有二进制元素都以varchar2(1000)=‘11111 …0000.1111’的形式存储,但是操作和数据存储量很大,因此需要一些优化解决方案。如果此数据可以二进制格式存储,则将需要1000/8字节(具有>700mn条记录) 可能的解决方案是对这些操作使用某种Java

  • 用途: 在字符串与二进制数据之间相互转换 打包和拆包 import struct import binascii values = (1, 'ab'.encode('utf-8'), 2.7) s = struct.Struct('I 2s f') packed_data = s.pack(*values) print('Original values:', values) print('Fo

  • JavaScript是一种动态类型语言,变量是没有类型的,可以随时赋予任意值。但是,数据本身和各种运算是有类型的,因此运算时变量需要转换类型。大多数情况下,这种数据类型转换是自动的,但是有时也需要手动强制转换。 强制转换 Number函数:强制转换成数值 String函数:强制转换成字符串 Boolean函数:强制转换成布尔值 自动转换 自动转换为布尔值 自动转换为字符串 自动转换为数值 小结 加

  • 变量只是用于存储值的保留内存位置。 这意味着当您创建变量时,您会在内存中保留一些空间。 根据变量的数据类型,操作系统分配内存并决定可以存储在保留内存中的内容。 因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符。 Java中有两种数据类型 - 原始数据类型 参考/对象数据类型 原始数据类型 Java支持八种原始数据类型。 原始数据类型由语言预定义,并由关键字命名。 现在让我们

  • 着色器语言GLSL的基本数据类型和C语言一样具有常见的整型数int、浮点数float和布尔值bool类型数据。 关键字 数据类型 值 bool 布尔值 布尔变量值为true或false int 整型数 值为整数,比如0,1,2,3... float 单精度浮点数 浮点数用小数点表示,比如0.6,3.14,2.8 // bool关键字声明一个数据类型是布尔值的变量,并赋值为true bool lig

  • 本文向大家介绍Java基本数据类型与类型转换实例分析,包括了Java基本数据类型与类型转换实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java基本数据类型与类型转换。分享给大家供大家参考,具体如下: 基本数据类型 整型 浮点型 字符型 布尔型 数据类型转换 数组 首发时间:2017-06-22 21:18 修改时间: 2018-03-16 15:40  :修改了一下文字布局和样