Java(91):Java byte数组转换成ASCII码,⼗六进制字符串打印

您所在的位置:网站首页 字符串转字节数组,对应几位 Java(91):Java byte数组转换成ASCII码,⼗六进制字符串打印

Java(91):Java byte数组转换成ASCII码,⼗六进制字符串打印

2024-07-10 10:40| 来源: 网络整理| 查看: 265

前言:最近字节数据需要打印出现查看,但是字节数据不可直接打印

查找网上原因:在内存中,数据都是以byte 为单位存储在内。当程序文件加载到内存中,才能运行。

1 byte =8bit,即8个0或1组成的序列。所以内存中都是0和1。

比如对于内存中的一段bit序列0110 0001,如果赋予它为整数类型,

它就代表十进制的97或十六进制的61(0x61);

如果把它看做一个字符串,查ASCII码表,它就是字母a。

在ASCII码表中,大写字母A~Z是十六进制数41到5A,小写字母是十六进制数61到7A。大写字母用二进制表示的话是从: 01000001   到   01011010 小写字母是从: 01100001   到   01111010

对比可以看出,差别在二进制从右往左第6位(b5)上,小写比大写多1,这可以理解为字母大小写切换的开关位,单击键盘上的“caps lock”或长按shift就与其有关。同样的,在主键盘区上,除了字母外一个键位通常对应两个符号,比如在1和!在一起,3和#在一起,等等。查ASCII码表也能找到shift键作为开关键的依据。可见,ASCII码表在设计时就是考虑了人类常用字符与交互工具-键盘的键位对应。

解决方法:Java中需要用DatatypeConverter.printHexBinary转换成⼗六进制打印出来。

Java byte数组转换成ASCII码,⼗六进制字符串打印 1、执行结果 public class HexBinary { public static void main(String[] args){ String plain="HELLO WORLD!"; byte[] input = plain.getBytes(); System.out.println("字符串长度"+plain.length()+",String plain:"+plain); System.out.println("input字节数据长度:"+input.length + ",bytes input:" + DatatypeConverter.printHexBinary(input)); } }

输入:HELLO WORLD!

输出:48454C4C4F20574F524C4421

2、对比字符串和ASCII表:

Hex(十六进制)     0x48   H  大写字母H 0x45   E   大写字母E 0x4C   L   大写字母L 0x4C   L   大写字母L 0x4F   O  大写字母O 0x20  (space)  空格 0x57  W   大写字母W 0x4F   O  大写字母O 0x52   R  大写字母R 0x4C   L   大写字母L 0x44  D   大写字母D 0x21  !    叹号

ASCII参考:https://baike.baidu.com/item/ASCII/309296?fr=aladdin



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3