Java(91):Java byte数组转换成ASCII码,⼗六进制字符串打印 |
您所在的位置:网站首页 › 字符串转字节数组,对应几位 › Java(91):Java byte数组转换成ASCII码,⼗六进制字符串打印 |
前言:最近字节数据需要打印出现查看,但是字节数据不可直接打印 查找网上原因:在内存中,数据都是以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 |