`

byte与进制及基本类型间的转换

阅读更多
Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L)。即byte用十六进制表示只占2位。
同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。
根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了。


// 16进制需要的字符串数据
private static final String HEX_NUMS_STR = "0123456789ABCDEF";
/**
	 * 将16进制字符串转换成字节数组
	 * 
	 * @param hex
	 * @return
	 */
	public static byte[] hexStringToByte(String hex) {
		int len = (hex.length() / 2);
		byte[] result = new byte[len];
		char[] hexChars = hex.toCharArray();
		for (int i = 0; i < len; i++) {
			int pos = i * 2;
			result[i] = (byte) (HEX_NUMS_STR.indexOf(hexChars[pos]) << 4 | HEX_NUMS_STR
					.indexOf(hexChars[pos + 1]));
		}
		return result;
	}

	/**
	 * 将指定byte数组转换成16进制字符串
	 * 
	 * @param b
	 * @return
	 */
	public static String byteToHexString(byte[] b) {
		StringBuffer hexString = new StringBuffer();
		for (int i = 0; i < b.length; i++) {
			String hex = Integer.toHexString(b[i] & 0xFF);
			if (hex.length() == 1) {
				hex = '0' + hex;
			}
			hexString.append(hex.toUpperCase());
		}
		return hexString.toString();
	}
分享到:
评论

相关推荐

    byte、十进制、十六进制间的转换

    byte数组、十进制、十六进制间的两两转换

    进制数转换二进制八进制十进制十六进制之间转换方法PPT学习教案.pptx

    (1)十进制转换为其他进制数:按位权乘以基数的N-1次方。 (2)其他进制数转换为十进制:整数部分除基数取余,小数部分乘基数取整。 四、具体转换方法 (1)十进制与二进制之间的转换: * 十进制转换为二进制:...

    Go-此工具用于将16进制字符串转换成10进制byte数组

    通过上述介绍,我们可以看出这个工具在Go开发中扮演着重要角色,帮助开发者高效地处理16进制字符串与10进制byte数组之间的转换。如果你需要进一步了解或使用这个工具,可以查看`convert-master`压缩包内的源代码。

    C#string转byte(16进制)代码.txt

    输入string 输出byte 16进制下的转换

    pb字符串转十六进制及各进制之间转换源码

    例如,从二进制转八进制,先将二进制转换为十进制,再由十进制转换为八进制。 在实际编程中,我们可能还需要考虑到溢出、负数、大整数等问题。对于大整数,PowerBuilder 9可能需要使用长整型(Long)或者自定义的...

    16进制与10进制相互转换,整型,双整型,浮点数等

    所以使用程序读出的都是一个16进制字符串,这时就需要自己手动根据数据类型转换成10进制自己需要的数,自已编写的一个小工具,完美实现各种数据类型16进制与10进制之间的转换,包括Byte、Word、DWord、Int、Dint、...

    android byte字节数组转换十六进制字符串

    在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...

    PHP CRC8算法-集成十六进制转byte数组与byte数组转十六进制

    由C代码翻译过来的PHP CRC8算法,内有十六进制转字节数组与字节数组转十六进制,内有十六进制转byte数组与byte数组转十六进制

    C#byte[]与汉字、16进制字符的转换[文].pdf

    C#中Byte数组与汉字、十六进制字符的转换 在C#中,字符串和Byte数组之间的转换是非常常见的操作。特别是在网络传输和数据存储时,我们需要将字符串转换为Byte数组,以便进行传输和存储。但是,当我们需要处理汉字和...

    blob,将byte二进制转成pdf

    标题中的“blob,将byte二进制转成pdf”指的是在IT领域中处理二进制数据(Blob)并将其转换为PDF文档的过程。Blob在计算机科学中通常代表Binary Large Object,用于存储大块非结构化的数据,如图像、音频、视频或者在...

    八进制和成二进制的转换方法

    1. **基本转换规则**:为了将一个二进制数转换为八进制数,我们通常采用每三位二进制数转换为一位八进制数的方法。这是因为2^3 = 8,即三位二进制可以恰好表示一位八进制。 - 例如: - (000)_2 = (0)_8 - (001)_2...

    16进制与10进制浮点数相互转换

    进制转换是编程中必不可少的基础知识,尤其是在处理数值计算和存储时。本文将深入探讨16进制与10进制浮点数之间的相互转换,以及如何在VB6(Visual Basic 6)环境中实现这一转换过程。 首先,让我们了解浮点数的...

    c# 对象与byte[]二进制流的转换帮助类

    系统自用,可把c#的对象存入txt文本或者数据库中 ,供下次直接使用,(double[,],List[]&gt;等之类的对象)

    java基本类型与byte数组互相转换.doc

    "java基本类型与byte数组互相转换" Java基本类型是指Java语言中最基本的数据类型,包括byte、short、int、long、float、double、char、boolean等。这些基本类型在内存中以二进制形式存储,而byte数组是Java中的一种...

    二进制与十进制转换PPT学习教案.pptx

    二进制与十进制转换PPT学习教案 一、十进制系统 十进制系统是一种基于10的数制系统,具有10个数字符号:0, 1, 2, 3, 4, 5, 6, 7, 8, 9。各位权是以10为底的幂。进位规则是逢10进1,借1当10。例如,十进制数315.76...

    S7-200SMART将多个字节Byte16进制数(ASCII码值)转换成双字DWORD浮点数(源程序和库文件).zip

    本话题关注的是如何在S7-200SMART中将多个字节的Byte16进制数(ASCII码值)转换为双字DWORD浮点数。这个过程对于读取或写入带有ASCII编码的数据,例如来自HMI(人机界面)或者通过串行通信接收的数据,尤其重要。 ...

    MD5加密与byte数组与16进制相互转换

    包含MD5加密,同时拥有多种方式进行byte或者byte[]与16进制相互转换 三种方式: 方式一:Integer.toHexString(int) 对应的是: Integer.parseInt(String, int)或者Integer.valueOf(String, int) 方式二:位运算(& ...

    C#16进制转换10进制

    在C#编程语言中,进行数字的进制转换是非常常见的操作。本文主要讲解如何在C#中实现16进制转换为10进制,以及相关的位运算知识。 首先,让我们来看看C#如何进行16进制到10进制的转换。C#提供了`Convert.ToInt32`...

    十六进制与字符串转换

    在处理这些情况时,理解内存布局、数据类型和进制转换的原理是非常重要的。 了解了这些基本的转换方法后,你就可以灵活地在Linux C环境中处理十六进制数据和字符串,无论是解析日志文件、调试程序还是处理底层通信...

    PB12.5 ---关于BLOB转换和数据之间的转换,及各进制之间的转换

    8位二进制转byte 二进制转十进制数 二进制转十六进制 4.byte byte转8位二进制 byte转2位十六进制 5.十进制数 十进制转二进制 十进制转十六进制 6.十六进制 十六进制转二进制 2位十六进制转byte 十六进制转...

Global site tag (gtag.js) - Google Analytics