Java开发过程中,我们常会需要将二进制数组转换为字符串。Spring的工具类DegistUtils提供了相关的方法,那具体的原理是啥呢?其实字符串和字节的转换,关键在于如何取出字节的高四位和低四位。先阐述具体方法:

一个字节占8位,如何取出其高四位和低四位?例如:有字节11101001,高四位:1110、低四位:1001,如何取出?

  • 取高四位:与字节11110000做与运算后右移四位,字节11110000转化为十六进制为0xF0,十进制值为255-15=240

(11101001 & 11110000) >>4

  • 取低四位:与字节00001111做与运算,字节00001111转化为16进制为0x0F,十进制值为15

(11101001 & 00001111)

1、二进制字节转换为十六进制字符

public static String BinaryToHexString(byte[] bytes){   String result = "";   String hex = "";   for(int i=0;i<bytes.length;i++){   //字节高4位   hex = String.valueOf(hexStr.charAt((bytes[i]&0xF0)>>4));   //字节低4位   hex += String.valueOf(hexStr.charAt(bytes[i]&0x0F)); result +=" ";result +=hex;   }   return result;
}

2、二进制字节转换为十六进制字符

public static byte[] HexStringToBinary(String hexString){   //hexString的长度对2取整,作为bytes的长度int len = hexString.length()/2;   byte[] bytes = new byte[len];   byte high = 0;    //字节高四位   byte low = 0;    //字节低四位   for(int i=0;i<len;i++){   //左移四位得到高位   high = (byte)((hexStr.indexOf(hexString.charAt(2*i)))<<4);   low = (byte)hexStr.indexOf(hexString.charAt(2*i+1));   bytes[i] = (byte) (high|low);//高低位做或运算   }   return bytes;
}

Java中二进制与十六进制的转换相关推荐

  1. Java的编程基础-----Java中二进制与十进制的转换

    Java的编程基础-----Java中二进制与十进制的转换 文章目录

  2. java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法

    Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...

  3. java中的进制输出转换_java中进制的转换,Byte与16进制的转换

    java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下: 首先关于最简单的二进制转换的方法有: 十 ...

  4. Java中四种进制转换

    进制介绍 举例: 不同进制转换运算 Java中二进制使用0b(0B)前缀来表示,不足一字节需高位补零,凑成8位. Java中八进制使用0前缀来表示. Java中十六进制使用0x(0X)来表示,a~e( ...

  5. 7.Java中变量的隐式转换以及强类型转换

    1.变量的相加,(变量的数据类型一致),直接运算即可!          结论:         Java中变量的 隐式转换(数据类型的默认类型提升)         byte,short,char- ...

  6. java中字符和字节的转换_Java最佳实践–字符到字节和字节到字符的转换

    java中字符和字节的转换 在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优. 特别是,我们将着重于使用默认编码时如何有效地处理字符到字节和字节到字符 ...

  7. 在BASH下简单实现十进制到二进制和十六进制的转换

    #!/bin/bash #scriptname:conver #在BASH下简单实现十进制到二进制和十六进制的转换 cat<<info 1] 10=>2 2] 10=>16 i ...

  8. JAVA:实现二进制转十六进制算法(附完整源码)

    JAVA:实现二进制转十六进制算法 package com.thealgorithms.conversions;import java.util.*;public class BinaryToHexa ...

  9. Java中实现图片格式的转换

    小小的代码片段,在Java中实现图片格式的转换. 下边的示例中,使用了jpg->jpg,^_^我懒得修改了再测试了,我在实际使用的时候是从bitmap位图转换为了jpg. package com ...

最新文章

  1. c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2
  2. 后疫情时代,乳企如何迎来下一个风口?
  3. 使用JAXB将XML Schema绑定到Java类
  4. LINUX下统计代码行数
  5. 小米 9 年,雷军开启 AIoT 与 5G 超级互联网时代!
  6. RAW-socket
  7. java.io.InvalidClassException
  8. 【智能制造】智能制造能力成熟度评测三部曲
  9. Sailfish OS构建(1)
  10. matlab希尔伯特变换,利用MATLAB实现Hilbert变换代码
  11. android3d画廊自动切换,Android viewpager 3D画廊的实现方法
  12. HTML实现圆形头像效果
  13. Android Socket 编程(WIFI 和 ADB)
  14. CleanMyMac2023免费版系统清理优化工具
  15. Minecraft Mod开发环境搭建 | Minecraft 1.15.2 | Forge 31.1.0
  16. [JZOJ5987] 仙人掌毒题
  17. webview显示图片太大,导致webview显示图片还要左右滑动的解决方法
  18. Anaconda自带python,在cmd中输入python提示不是内部命令或外部命令
  19. Java SE 易错题
  20. 如何将VSCode添加到鼠标右键菜单

热门文章

  1. Kerloud Lite 电源模块发布
  2. 字符串汉字英文数字判断
  3. 绘本的力量 读书笔记(持续更新)
  4. ava实现汉字转拼音,多音字处理
  5. 联想G480a 3230 Win7 操作系统 解决 小键盘问题
  6. cad绘图100实例解题_横沥CAD培训从入门到精通,CAD绘图技巧分享
  7. C语言编辑器的使用(VS)
  8. Python魔法方法指南
  9. Tomcat启动报错子容器启动失败
  10. C++多线程矩阵相乘