如何解决如何在Java中以可读的方式显示十六进制
我有一台设备通过udp数据包向我发送其十六进制格式的IP地址。 我想以输入的格式打印该IP地址。例如FF FF FF FF。
但是我不确定该怎么做,我的代码也行不通,因为它会将所有内容变成不可读的UTF-8符号。
byte[] ipAddr = {(byte)0xFF,(byte)0xFF,(byte)0xFF};
String ipString = new String(ipAddr,StandardCharsets.UTF_8);
如何更改代码,以便打印ipString给出“ FF FF FF FF”?
解决方法
您可以使用ByteBuffer
将4个字节转换为int
,然后使用String.format()
将其格式化为带有前导零的十六进制,例如:
byte[] ipAddr = {(byte)0xFC,(byte)0xFD,(byte)0xFE,(byte)0xFF};
int ipInt = ByteBuffer.wrap(ipAddr).order(ByteOrder.BIG_ENDIAN).getInt();
String ipString = String.format("%08x",ipInt).toUpperCase();
System.out.println(ipString);
输出
FCFDFEFF
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。