把byte转化为十六进制

Java 中,如何把byte转化为十六进制呢?

我们知道,在java中,一个byte 就是一个字节,也就是八个二进制位;而4个二进制位就可以表示一个十六进制位,所以一个byte可以转化为2个十六进制位。

方式一:

Java代码  

  1. // 把byte 转化为两位十六进制数  
  2.     public static String toHex(byte b) {  
  3.         String result = Integer.toHexString(b & 0xFF);  
  4.         if (result.length() == 1) {  
  5.             result = '0' + result;  
  6.         }  
  7.         return result;  
  8.     }  
  9. @Test  
  10.     public void testHex4(){  
  11.         byte b='a';  
  12.         System.out.println(toHex(b));  
  13.     }  

 运行结果为 61

 

方式二:

Java代码  

  1.  private static char[] HexCode = {'0', '1', '2', '3', '4', '5', '6', '7',  
  2.             '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};  
  3. /** 
  4.      * byte2HexString 
  5.      * 
  6.      * @param b 
  7.      * @return 
  8.      */  
  9.     public static String byte2HexString(byte b) {  
  10.         StringBuffer buffer = new StringBuffer();  
  11.         buffer.append(HexCode[(b >>> 4) & 0x0f]);  
  12.         buffer.append(HexCode[b & 0x0f]);  
  13.         return buffer.toString();  
  14.     }  

 

 

总结如下:

(1)一个byte 对应两位十六进制位,而不是八位(32位二进制位);

 

(2)转化为十六进制之后,不足两位的,高位要补零。

时间: 2024-09-14 14:31:26

把byte转化为十六进制的相关文章

java中byte数组与十六进制字符串相互转换

最近在做加密算法的研究和使用,经常会用到byte数组和十六进制字符串的转换.之前对于此类问题我一般都是使用BigInteger这个类转换一下算了,这样为了看输出不是乱码.这其实都不是根本上的解决方案. 最简单的转换方法: /** * @see 将byte[]数组转换为String字符串 * @author Herman.Xiong * @date 2014年5月5日 17:15:42 * @param data byte数组 * @return String 转换后的字符串 */ public

c语言-求用C语言编写将“hello”这样的字符串转化为十六进制的代码实现

问题描述 求用C语言编写将"hello"这样的字符串转化为十六进制的代码实现 求用C语言编写将"hello"这样的字符串转化为十六进制的代码实现,急急急!!! 解决方案 #include<stdio.h> void main() { char str[]="abhello"; char *p=str; while(*p) { printf("%x ",*p++); } } 解决方案二: #include "

方法-C# 将byte[]转化为灰度图片

问题描述 C# 将byte[]转化为灰度图片 想要将存在byte[]信号强度数据转换成灰度图片,现在用下面这种方法,总是出现内存操作 错误,请大牛来为我解惑~~不胜感谢! public static Bitmap ToGrayBitmap(Int16[] rawValues, int width, int height) { //// 申请目标位图的变量,并将其内存区域锁定 Bitmap bmp = new Bitmap(width, height,PixelFormat.Format16bpp

程序题-一个超长字符串表示的十进制数转化为十六进制的字符串

问题描述 一个超长字符串表示的十进制数转化为十六进制的字符串 如题:超长字符串,简单的变成二进制然后每4位变一个十六进制貌似行不通!!

[请教]C# 读取数据库中的图片由byte[]转化成图像并在pictureBox中显示出来 遇到问题

问题描述 我使用的是动软代码生成器生成的简单三层结构的代码.我的目的是把数据库中的图片由byte[]转化成图像并在pictureBox中显示出来,BLL.CashBackmyBLLCashBack=newBLL.CashBack();Model.CashBackmyModelCashBack=newModel.CashBack();myModelCashBack=myBLLCashBack.GetModel(1001);MemoryStreamms=newMemoryStream();//新建内

将十进制转化为十六进制

#include<iostream> #include<string> using namespace std; int main() { const string hexdigits="0123456789ABCDEF"; cout<<"Enter a series of numbers between 0 and 15"<<" separates by spaces ,Hit ENTR when fini

二进制-java类型转化之int转换为byte[]

问题描述 java类型转化之int转换为byte[] 小白想请问一个问题: java中将int转换为byte[]数组时,我参考网上的代码如下: public byte[] int2bytes(int Num){ byte[] bytes = new byte[4]; bytes[0] = (byte)(Num & 0xff); bytes[1] = (byte)((Num >> 8) & 0xff ); bytes[2] = (byte)((Num >> 16) &

Javabyte[]数组和十六进制String之间的转换

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,原理同上. 根据以上原理,我们就可

java中byte转换int时为何与0xff进行与运算

转载:http://www.blogjava.net/orangelizq/archive/2008/07/20/216228.html 在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) {  String ret = "";  for (int i = 0; i < b.length; i++) {   String hex = Integer.toHexString(b[ i ] & 0xFF);