每日一算法--java的16进制与字符串的相互转换函数
2016-01-12 10:34
676 查看
1.将指定的byte数组,以16进制的形式打印到控制台
1. /**
2. * 将指定byte数组以16进制的形式打印到控制台
3. * @param hint String
4. * @param b byte[]
5. * @return void
6. */
7. public static void printHexString(String hint, byte[] b) {
8. System.out.print(hint);
9. for (int i = 0; i < b.length; i++) {
10. String hex = Integer.toHexString(b[i] & 0xFF);
11. if (hex.length() == 1) {
12. hex = '0' + hex; //统一格式(2位数)
13. }
14. System.out.print(hex.toUpperCase() + " ");
15. }
16. System.out.println("");
17. }
计算机中使用补码存放负数,现按照8位数码来解释-1:
-1原码:1 0000 0001 -1补码:1 1111 1111(计算机中实际存储的是这个)
故-1的十六进制为FF。
这个工作过程大致是个这样子的:
java中一个byte为8位,而int为32位,故需要用b[i] & 0xFF来掩掉其他多余24位,现以1和-1为例:
1计算机中实际存储的是:
0000 0000 0000 00000 0000 0000 0000 00001
因为一个字节数值范围在00-FF之间,故只需要最后8位即可,将其余24位掩掉,即按位与0XFF:0000 0000 0000 00000 0000 0000 1111 11111
得到的还是1,故1的十六进制转出为01
-1计算机中实际存储的是(补码):
1 1111 1111 1111 1111 1111 1111 1111 1111,
若直接转十六进制则为FFFFFFFF,而一个字节数值范围在00-FF之间,所以我们只需要后8位即可,将前24个1掩掉(即按位与0XFF)得到:
1 0000 0000 0000 0000 0000 0000 1111 1111
即转出的十六进制为FF
1. /**
2. * 将指定byte数组以16进制的形式打印到控制台
3. * @param hint String
4. * @param b byte[]
5. * @return void
6. */
7. public static void printHexString(String hint, byte[] b) {
8. System.out.print(hint);
9. for (int i = 0; i < b.length; i++) {
10. String hex = Integer.toHexString(b[i] & 0xFF);
11. if (hex.length() == 1) {
12. hex = '0' + hex; //统一格式(2位数)
13. }
14. System.out.print(hex.toUpperCase() + " ");
15. }
16. System.out.println("");
17. }
计算机中使用补码存放负数,现按照8位数码来解释-1:
-1原码:1 0000 0001 -1补码:1 1111 1111(计算机中实际存储的是这个)
故-1的十六进制为FF。
这个工作过程大致是个这样子的:
java中一个byte为8位,而int为32位,故需要用b[i] & 0xFF来掩掉其他多余24位,现以1和-1为例:
1计算机中实际存储的是:
0000 0000 0000 00000 0000 0000 0000 00001
因为一个字节数值范围在00-FF之间,故只需要最后8位即可,将其余24位掩掉,即按位与0XFF:0000 0000 0000 00000 0000 0000 1111 11111
得到的还是1,故1的十六进制转出为01
-1计算机中实际存储的是(补码):
1 1111 1111 1111 1111 1111 1111 1111 1111,
若直接转十六进制则为FFFFFFFF,而一个字节数值范围在00-FF之间,所以我们只需要后8位即可,将前24个1掩掉(即按位与0XFF)得到:
1 0000 0000 0000 0000 0000 0000 1111 1111
即转出的十六进制为FF
相关文章推荐
- java 枚举类型enum 的使用
- Eclipse"启动"问题:Failed to load the JNI shared library jvm.dll
- Java中List与Map初始化的一些写法分享
- Spring中@Autowired注解、@Resource注解的区别
- java 线程、线程池基本应用演示样例代码回想
- Eclipse闪退/打不开/无法启动/一闪而过
- 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3
- 解决remove @override annotation(jdk1.5和jdk1.6)
- 深入理解java异常处理机制
- java转义字符对照表
- SFTPTool 和 FTPTooL.java
- spring boot 学习小结1 spring mvc环境搭建
- eclipse下如何打开ftl文件
- AndroidStudio快捷键和Eclipse快捷键对比
- Eclipse添加默认的JRE
- 【Struts2基础】——Struts1 & Struts2 区别
- Java 加密解密之对称加密算法AES
- java深入技术九 (注解)
- 解决Eclipse中文乱码的方法
- eclipse安装php插件