今天在写个程序,把服务端16进制串再转成base64编码,传给体重硬件,但是碰到个问题,如下:
年龄、性别、身高,这三个数值需要用10进制转16进制,OK,我们用了Integer.toHexString(age)进行处理,这里转出来的是16进制,并且把这三个值拼凑成一个字符串。
那么问题来了,base64位是需要用byte来转的,我们一不小心,直接就使用jdk中字符串.getBytes()方法,完全把16进制字符串的意思改变了,转出来的码也不一样。最后上网才知道hex串需要按照字节一个个去转。
public static byte[] hex2Bytes( String hex ) { if( isEmpty(hex) || hex.length() %2> 0 ) { log.error("hex2Bytes: invalid HEX string:" + hex ); return null; } int len = hex.length() / 2; byte[] ret = new byte[ len ]; int k = 0; for (int i = 0; i < len; i++) { int c = hex.charAt(k++); if( c>='0'&& c<='9' ) c = c-'0'; else if( c>='a'&& c<='f' ) c = c-'a'+ 10; else if( c>='A'&& c<='F' ) c = c-'A'+ 10; else { log.error("hex2Bytes: invalid HEX string:" + hex ); return null; } ret[i]= (byte)(c<<4); c = hex.charAt(k++); if( c>='0'&& c<='9' ) c = c-'0'; else if( c>='a'&& c<='f' ) c = c-'a'+ 10; else if( c>='A'&& c<='F' ) c = c-'A'+ 10; else { log.error("hex2Bytes: invalid HEX string:" + hex ); return null; } ret[i]+= (byte)c; } return ret; }
相关推荐
例如,在网络通信、文件存储等场景中,经常需要将二进制数据(通常表示为`byte`数组)转换为十六进制字符串形式(即`hex`),或者相反地,将十六进制字符串转回二进制数据。这种需求催生了两个重要的函数:`hex2byte...
当我们使用蓝牙通信或者其他通信技术,常常需要用到数据之间的转换,此工具则是java收发蓝牙数据间的hexString 与byte之间的相互转化
在Java或类似的编程语言中,我们经常会遇到需要将字符串(String)与字节数组(Byte[])以及十六进制表示的字符串(Hex)进行相互转换的情况。这些转换在处理网络通信、文件存储、加密解密等领域尤为关键。下面我们...
浮点数转换为四字节数HexToByte是计算机编程中的一个重要操作,特别是在处理二进制数据、网络传输或存储时。浮点数是一种用于表示数值的格式,它包括正负号、指数和尾数部分,能够精确表示大部分实数。在计算机内部...
在本文示例中,我们关注的是如何利用Java的Hex编码和解码来处理AES加密和解密的过程。 首先,让我们了解什么是Hex编码。Hex编码是一种将二进制数据转换为可打印字符的表示方式,每个字节被转换为两个十六进制数字...
Java中byte[]、String、Hex字符串等转换的方法 Java中byte[]、String、Hex字符串等转换的方法是非常重要的知识点,这些转换方法在实际开发中经常被使用。下面将详细介绍这些转换方法。 byte[]和byte的合并 在Java...
首先,我们需要理解Java中的字节数组(`byte[]`)和16进制字符串之间的关系。一个字节在Java中占用8位,可以表示-128到127之间的整数。而16进制的一个字符则表示4位(半字节),因此,一个字节可以用两个16进制字符...
在这个名为"Hex转Bin的小程序"的主题中,我们可以讨论以下相关知识点: 1. **十六进制与二进制的转换原理**:每四位二进制对应一位十六进制,因为2^4 = 16。例如,十六进制的'1A'转换为二进制就是0001 1010。转换...
用于java,byte与各种对象的转换,Integer、short、hex、string
Java 中的 3DES 加密解密示例(封装 byte 数组和 16 进制字符串互转) 在 Java 中,3DES 加密是一种常用的加密算法,它可以将明文数据转换为密文数据,以保护数据的安全性。在本示例中,我们将展示如何使用 3DES ...
### Java中String、十六进制String与byte[]之间的相互转换 在Java开发中,字符串(String)、十六进制表示的字符串以及字节数组(byte[])之间的转换是非常常见的需求,尤其是在处理网络通信、文件读写等场景下。...
本篇文章将详细探讨Java中如何实现Hex加解密,以及解决大小写问题的方法。 首先,我们来理解Hex加密的基本原理。Hex加密实际上是将二进制数据转换为十六进制字符串的过程。在Java中,我们可以使用`java.util....
在Java编程语言中,Integer和Byte之间的转换是常见的操作,特别是在处理二进制数据或网络通信时。本文档主要探讨了如何在Java中实现这两种数据类型的转换,包括有符号和无符号的转换。 首先,Integer在Java中占用4...
1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`方法,配合`"0b"`前缀来解析二进制字符串。例如: ```java String binary = "1010"; int decimal = Integer.parseInt(binary, 2); `...
Java中的`byte`类型是8位的,取值范围是-128到127。如果要将其转换为无符号的32位整数`int`,可以使用按位与操作符`&`和0xFF。`DataTypeChangeHelper`类中的`unsignedByteToInt`方法就实现了这一点: ```java ...
netty通信时经常和底层数据交互,C语言和java的数据类型和范围不同,通信时需要转化或兼容,附件为字节码、进制常用的转换类。
String 与 byte[] 之间的转换是 Java 编程中常见的问题之一,这两个类型之间的转换需要注意避免乱码问题。在 Java 中,String 类型是 Unicode 字符串,byte[] 数组则是二进制数据。这两个类型之间的转换需要使用正确...
在Java和Android中,将字节数组转换为字符串最常用的方法是使用`new String(byte[])`构造函数。此方法会使用平台默认的字符编码,这可能会导致在不同系统上显示不同的结果。为了避免这个问题,我们通常指定一个明确...
在 Java 中,我们可以使用 `Bytes2HexString` 函数将 byte 数组转换为 16 进制字符串。该函数接受一个参数 b,即 byte 数组,然后将其转换为 16 进制字符串。 ```java public static String Bytes2HexString(byte[]...
在Java编程语言中,String类是处理文本字符串的核心类,而与各种进制字符之间的转换是常见的编程需求。本文将详细探讨Java中如何进行String与二进制、八进制、十进制以及十六进制之间的转换。 首先,我们要了解进制...