`
GhostWolf
  • 浏览: 312841 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java中hex转byte问题

阅读更多

今天在写个程序,把服务端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;
	}	

 

分享到:
评论

相关推荐

    hex2byte byte2hex

    例如,在网络通信、文件存储等场景中,经常需要将二进制数据(通常表示为`byte`数组)转换为十六进制字符串形式(即`hex`),或者相反地,将十六进制字符串转回二进制数据。这种需求催生了两个重要的函数:`hex2byte...

    hexString与byte互转

    当我们使用蓝牙通信或者其他通信技术,常常需要用到数据之间的转换,此工具则是java收发蓝牙数据间的hexString 与byte之间的相互转化

    String(含Hex)与Byte数组互相转换[代码]

    在Java或类似的编程语言中,我们经常会遇到需要将字符串(String)与字节数组(Byte[])以及十六进制表示的字符串(Hex)进行相互转换的情况。这些转换在处理网络通信、文件存储、加密解密等领域尤为关键。下面我们...

    byte数组转化为hex

    首先,我们需要理解Java中的字节数组(`byte[]`)和16进制字符串之间的关系。一个字节在Java中占用8位,可以表示-128到127之间的整数。而16进制的一个字符则表示4位(半字节),因此,一个字节可以用两个16进制字符...

    浮点数转四字节数HexToByte

    浮点数转换为四字节数HexToByte是计算机编程中的一个重要操作,特别是在处理二进制数据、网络传输或存储时。浮点数是一种用于表示数值的格式,它包括正负号、指数和尾数部分,能够精确表示大部分实数。在计算机内部...

    java使用Hex编码解码实现Aes加密解密功能示例

    在本文示例中,我们关注的是如何利用Java的Hex编码和解码来处理AES加密和解密的过程。 首先,让我们了解什么是Hex编码。Hex编码是一种将二进制数据转换为可打印字符的表示方式,每个字节被转换为两个十六进制数字...

    Java中byte[]、String、Hex字符串等转换的方法

    Java中byte[]、String、Hex字符串等转换的方法 Java中byte[]、String、Hex字符串等转换的方法是非常重要的知识点,这些转换方法在实际开发中经常被使用。下面将详细介绍这些转换方法。 byte[]和byte的合并 在Java...

    Hex转Bin的小程序

    在这个名为"Hex转Bin的小程序"的主题中,我们可以讨论以下相关知识点: 1. **十六进制与二进制的转换原理**:每四位二进制对应一位十六进制,因为2^4 = 16。例如,十六进制的'1A'转换为二进制就是0001 1010。转换...

    java byte转换工具类

    用于java,byte与各种对象的转换,Integer、short、hex、string

    Java中3DES加密解密示例(封装byte数组16进制互转)

    Java 中的 3DES 加密解密示例(封装 byte 数组和 16 进制字符串互转) 在 Java 中,3DES 加密是一种常用的加密算法,它可以将明文数据转换为密文数据,以保护数据的安全性。在本示例中,我们将展示如何使用 3DES ...

    java中String_十六进制String_byte[]之间相互转换

    ### Java中String、十六进制String与byte[]之间的相互转换 在Java开发中,字符串(String)、十六进制表示的字符串以及字节数组(byte[])之间的转换是非常常见的需求,尤其是在处理网络通信、文件读写等场景下。...

    hex 加解密--java

    本篇文章将详细探讨Java中如何实现Hex加解密,以及解决大小写问题的方法。 首先,我们来理解Hex加密的基本原理。Hex加密实际上是将二进制数据转换为十六进制字符串的过程。在Java中,我们可以使用`java.util....

    学习文档_JAVA中Integer和Byte转换.doc

    在Java编程语言中,Integer和Byte之间的转换是常见的操作,特别是在处理二进制数据或网络通信时。本文档主要探讨了如何在Java中实现这两种数据类型的转换,包括有符号和无符号的转换。 首先,Integer在Java中占用4...

    java中进制转换(二进制,十进制,十六进制)及字节数组与十六进制的转换

    1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`方法,配合`"0b"`前缀来解析二进制字符串。例如: ```java String binary = "1010"; int decimal = Integer.parseInt(binary, 2); `...

    java byte数组与int,long,short,byte的转换实现方法

    Java中的`byte`类型是8位的,取值范围是-128到127。如果要将其转换为无符号的32位整数`int`,可以使用按位与操作符`&`和0xFF。`DataTypeChangeHelper`类中的`unsignedByteToInt`方法就实现了这一点: ```java ...

    netty 在java中的字节码转换

    netty通信时经常和底层数据交互,C语言和java的数据类型和范围不同,通信时需要转化或兼容,附件为字节码、进制常用的转换类。

    Android byte[] 和 String互相转换

    在Java和Android中,将字节数组转换为字符串最常用的方法是使用`new String(byte[])`构造函数。此方法会使用平台默认的字符编码,这可能会导致在不同系统上显示不同的结果。为了避免这个问题,我们通常指定一个明确...

    String 与byte[] 间的转换

    String 与 byte[] 之间的转换是 Java 编程中常见的问题之一,这两个类型之间的转换需要注意避免乱码问题。在 Java 中,String 类型是 Unicode 字符串,byte[] 数组则是二进制数据。这两个类型之间的转换需要使用正确...

    java16进制与字符串的转换.pdf

    在 Java 中,我们可以使用 `Bytes2HexString` 函数将 byte 数组转换为 16 进制字符串。该函数接受一个参数 b,即 byte 数组,然后将其转换为 16 进制字符串。 ```java public static String Bytes2HexString(byte[]...

    java String 与各种进制字符之间的转换

    在Java编程语言中,String类是处理文本字符串的核心类,而与各种进制字符之间的转换是常见的编程需求。本文将详细探讨Java中如何进行String与二进制、八进制、十进制以及十六进制之间的转换。 首先,我们要了解进制...

Global site tag (gtag.js) - Google Analytics