方法3:

BigInteger bigInteger = new BigInteger(1,bytes);

String string = bigInteger.toString(16);//转换成16进制数的字符串

// 或者直接写成 new BigInteger(1,bytes).toString(16);

for(int i=0;i<32-string.length();){

string ="0"+string;

}

//拼接0。通常,md5会和转16进制一起用,md5会得到一个16个数的byte数组,1个数即1个byte,16进制下是2位。16个数就是32位。

需求中,将md5加密后的数据转换成16进制,意思是转成32个长度的字符串。

注意:这个for循环后面不要写i++,因为string.length()在增加,而i也在增加,如果碰到byte数组第一个数是0的话,最后只能得到31位,而非32位。

这个for循环另一个写法:

int length=string.length();

for(int i=0;i<32-length;i++){

string ="0"+string;

}

解读:利用BigInteger这个类,它会将bytes数组转换成一个大数。例如,byte数组{1},转换后就是1,byte数组{1,1},转换后是257,byte数组{1,2},转换后是258,byte数组{2,1},转换后是513。

原理:它利用了拼接的思想,把byte数组里第1个数(8位)和第2个数(8位)拼在了一起,当第2个数拼在第1个数后面时,因为第2个数有8位,所以第1个数是从第9位开始。所以第1个数的1,是100000000,后面接8个0,即2的8次方,256,加上第2个数的1,等于257。

在计算机里,数字用的是移位(即第1个数往左移8位即可),字符串用的是拼接。虽然处理的方法不一样,但思想是一样的。

Java十六进制码的字符_【重点】java中 转16进制字符串 hex相关推荐

  1. python将图片转十六进制_如何使用python将16进制字符串还原为PNG图片?

    各位,我这里有一个png图片的16进制的字符串,如何用python输出为png位图? thanks 89504e470d0a1a0a0000000d49484452000000320000007b08 ...

  2. java 字节 16进制_Java字节数组和16进制字符串的互相转化

    背景基础知识: 1.1. "字符"是由数字来表示的 先来重新了解一下计算机是如何处理"字符"的,这个原理是大家必须记住的,特别是在用JAVA写程序的时候,万万不 ...

  3. Java中byte与16进制字符串的互相转换

    https://www.cnblogs.com/qinwangchen/p/5418028.html * Convert byte[] to hex string.这里我们可以将byte转换成int, ...

  4. Java将16进制字符串,转换成字符串

    Java将16进制字符串,转换成字符串 前段时间遇到同事给了我一串16进制的字符串,让我把它给转成正常的字符串. 16进制字符串: c8:ed:cc:bd:d5:eb 转换后正常的字符串: 软探针 解 ...

  5. java 颜色 16进制转换_Java中Color和16进制字符串互相转换的方法

    1.原理 主要是调用了toHexString(将int类型转为16进制字符串).parseInt(将字符串解析为int)这两个方法. 2.代码 public static void main(Stri ...

  6. qt 中文转十六进制_QT中16进制字符串转汉字

    最经在研究AT指令接受短信,短信是unicode编码,接受后需要根据系统的编码方案进行相关的转码 比如接受到了一串字符4F60597D,它是"你好"的unicode编码,一个uni ...

  7. 用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)

    项目中遇到客户的需求变化,要验证某个数据的正确性,判断输入的两位字符,第一位是数字16进制的,第二位是I.O.Q.U除外的字母(A到Z). 本来对js不熟练,网上参考了一下js正则验证的规则,使用正则 ...

  8. QT 字符转16进制字符串

    串口工具有一个功能是把字符转换成16进制字符 例如字符'6'的ASCII 码是54换成16进制是36 字符转16进制字符串 QString AngelaTest::charToHexStr(char ...

  9. linux 串口 字符 间隔,嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)...

    嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include #incl ...

最新文章

  1. Maven在Windows上的安装与配置
  2. IntelliJ IDEA 导入新项目
  3. 关于MYsql 多字段排序
  4. WCF学习- 基础概念
  5. 【cocos2d-x从c++到js】06:Google的继承写法解析
  6. 加速repo sync的技巧
  7. .NetCore模拟Postman的BasicAuth生成Authrization
  8. 互联网日报 | 苏宁易购拿下英雄联盟职业联赛赞助权;荣耀游戏本年内将推出;英特尔芯片总设计师辞职...
  9. T60 改LED 高压板连线方式。
  10. 表格制作模块xlwt
  11. Guice 依赖注入
  12. 导航栏隐藏的正确方式
  13. 形式逻辑(04)选言判断 和 推理
  14. 【免费-LOGO制作】——U钙网
  15. BFD:Bidirectional Forwarding Detection 双向转发检测
  16. Fortran基本知识
  17. 达梦8在VMware虚拟机麒麟系统下命令安装
  18. 在 iphone 手机浏览器无法下载(主要指 safari 和 chrome ) excel ,但是可以直接预览 excel
  19. 小感悟:多对多关系,一定要创建关系表吗?
  20. html5水墨背景,好看的水墨画背景图片

热门文章

  1. 快速傅里叶变换 及MATLAB函数
  2. 教你@media媒体查询来适配ipad iphone5678plus 各种屏幕
  3. 计算机接口标注方法,计算机内部接口大全!
  4. 美国观察:美国同事的工资
  5. 前端基础知识——HTML(三)
  6. Fuzzing(模糊测试)
  7. python二进制反码例题_Python 简易实现二进制反码求和
  8. neovim常用命令
  9. 电巢:人人都离不开的DRAM技术介绍
  10. Python编程:从入门到实践 动手试一试之8-7