使用Java自带的转换方法也可以但是会有如下情况发生:

Integer.toBinaryString(Integer.valueOf("0020",16))。---java自封装的方法

  1. 如果十六进制为“0020”类似这种的情况就会转换为100000,有0的则不会转换。
  2. 十六进制很长的时候就会出错,因为通过这样的转换,在把字符串转成整形的时候,长度太长了,超过的整形的最大值,。

于是便有了如下代码

public class BinaryConversion {private static String hexStr =  "0123456789ABCDEF";private static String[] binaryArray ={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};/**** @param str* @return 二进制数组转换为二进制字符串   2-2*/public static String bytes2BinStr(byte[] bArray){String outStr = "";int pos = 0;for(byte b:bArray){//高四位pos = (b&0xF0)>>4;outStr+=binaryArray[pos];//低四位pos=b&0x0F;outStr+=binaryArray[pos];}return outStr;}/**** @param bytes* @return 将二进制数组转换为十六进制字符串  2-16*/public static String bin2HexStr(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 +=hex;  //+" "}return result;}/**** @param hexString* @return 将十六进制转换为二进制字节数组   16-2*/public static byte[] hexStr2BinArr(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;}/**** @param hexString* @return 将十六进制转换为二进制字符串   16-2*/public static String hexStr2BinStr(String hexString){return bytes2BinStr(hexStr2BinArr(hexString));}
}

思路:

1、二进制字节转十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。
2、十六进制转二进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的十进制数字B与A做"|"运算,即可得到十六进制的二进制字节表示

参考:

https://blog.csdn.net/y353027520dx/article/details/51483558

https://www.cnblogs.com/Free-Thinker/p/6808510.html

二进制十六进制相互转换相关推荐

  1. [转载]C# 二进制与十进制,十进制与十六进制相互转换

    原文地址:C# 二进制与十进制,十进制与十六进制相互转换作者:tonytonglx 十进制转二进制: 用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 ...

  2. 四位二进制、十进制、四位十六进制相互转换(高位补零)python

    四位二进制.十进制.四位十六进制相互转换(高位补零) 四位二进制转十进制 十进制转四位二进制 十进制转十六进制 十进制转四位十六进制 四位十六进制转十进制 四位二进制转十进制 int(i, 2) 十进 ...

  3. 二进制与十进制、八进制、十六进制相互转换,八进制与十六进制以二进制为跳板转换(8421法则)

    C语言中相关进制表示: 十进制 以正常数字1-9开头,如123 八进制 以数字0开头,如0123 十六进制 以0x开头,如0x123 二进制 C语言不能直接书写二进制数 1. 二进制与十进制相互转换 ...

  4. C语言 十进制和十六进制相互转换 - C语言零基础入门教程

    目录 一.十进制和十六进制区别 1.基数不同 2.有效字符不同 3.用途不同 二.十进制转十六进制 三.十六进制转十进制 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 &g ...

  5. python字节流分割_Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

    问题描述 最近做一个项目,是用Python进行相关的串口操作.及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是Pyserial.在最初开发时,出现的问题在于:别人给的文档 ...

  6. C++ 字节流与二进制字符串相互转换(一个简单的明文加解密程序)

    1.想法由来 作为一名程序猿,在我们写文章.文字片段或者一句简短的话语,对外发表或者告之他人时,是否想过带点新意和创意呢?如果想过,那么这篇文章会给你一点帮助. 本文介绍的是一个简单的将明文与二进制字 ...

  7. mysql存图片二进制文件_将图片(二进制文件)存储于数据库,论文件字节流与二进制字符串相互转换...

    开发中遇到存储图片文件于数据库这样的需求. 我们知道文件本身就是一份二进制数据,不同类型的文件只是编码形式不同,对应的解读形式不同,无论txt文件.jpg文件亦或是mp4文件,本质上都是0和1组成的. ...

  8. IDEA插件系列(61):BinEd - Binary/Hexadecimal Editor插件——二进制/十六进制编辑器

    1.插件介绍 BinEd - Binary/Hexadecimal Editor插件. 基于 BinEd 库的二进制/十六进制编辑器插件. 在主"文件"菜单或项目文件上下文菜单中使 ...

  9. js二进制十六进制转换

    1 转为二进制十六进制转换 var a=130: console.log(a.toString(2));/*10进制转换成2进制*/console.log(a.toString(8)); /*10进制 ...

最新文章

  1. 【视频】视频方面大神博客总结
  2. 两个主键怎么设置tsql_索引该怎么创建?
  3. vector在java中用什么_在java中使用Vector是否安全?
  4. python安装后pip用不了 cmd命令窗口提示:Did not provide a command
  5. Tensorflow中的Protocol Buffer
  6. 【pyqt5】 读取numpy arrray 显示图片
  7. 高等数学上-赵立军-北京大学出版社-题解-练习2.6
  8. ACCESS的十种数据类型分别对应的添加语句
  9. 使用python+机器学习方法进行情感分析(详细步骤)
  10. Javascript数组函数库
  11. nginx部署静态网站
  12. Atom 常用快捷键
  13. 未来不迎,当时不杂,过往不乱
  14. 转 vo、po、dto、bo、pojo、entity、mode如何区分
  15. 在浏览器输入一句话之后是如何响应的
  16. 车载导航应用的哪些计算机知识,三维模拟智能车载导航系统的设计与实现
  17. codeforces 1324 D. Pair of Topics(思维)
  18. [zz]浅谈自然语言处理(NLP)和 自然语言理解(NLU)
  19. 微信小程序第三方平台开发流程以及改善
  20. P3224 [HNOI2012]永无乡 FHQ-Treap 启发式合并

热门文章

  1. 轮到苹果追赶国产厂商了?苹果新专利曝光iPhone将使用屏幕指纹解锁
  2. linux系统启动报错:[contains a file system with errors, check forced]的解决方法参考【ZT】
  3. 学习MiniGui之多线程机制【转】
  4. 程序员遇到bug时常见的30种反应
  5. 史上最详细JVM笔记
  6. c# 指定打开某个路径下的CMD_【自学C#】|| 笔记 25 文件的操作
  7. 嵌入式Linux入门7:kernel移植
  8. 常遇问题及一些可能的解决方案
  9. 深度学习入门读书笔记:Day-14
  10. Eclipse安装UML 插件