java - 如何在java中将int转换为hex?
问题描述
public void int2byte(){
int x = 128;
byte y = (byte) x;
System.out.println(Integer.toHexString(y));
}
我得到了结果 ffffff80,为什么不是 80?当 x = 127 时,我得到了结果 7f。
解决方案
字节用 Java 签名。当您128
转换为 abyte
时,它变为-128
。
: int
128
00000000 00000000 00000000 10000000
: byte
-128
10000000
然后,当你将它扩大回int
with 时Integer.toHexString
,因为它现在是负数,它会被符号扩展。这意味着出现了一堆1
位,解释了十六进制输出中的额外f
字符。
您可以使用无符号方式将其转换Byte.toUnsignedInt
为防止符号扩展。
通过无符号转换将参数转换为 an
int
。在到 an 的无符号转换中int
, 的高 24 位int
为零,低 8 位等于byte
参数的位。
System.out.println(Integer.toHexString(Byte.toUnsignedInt(y)));
另一种方法是通过仅手动保留 8 位来对符号扩展位进行位屏蔽byte
:
System.out.println(Integer.toHexString(y & 0xFF));
无论哪种方式,输出都是:
80
推荐阅读
- azure-active-directory - 在 Azure OIDC 注销后,应该将什么内容安全策略标头值重定向回应用程序
- java - 如何在没有 PG 服务器和 Web 控制台的情况下启动 H2 数据库命令行?
- php - 基于帖子术语的 Wordpress 搜索
- django - 如何在 docker 中设置 celery beat?
- python - Python中if语句的问题
- linked-list - 我可以只使用 ALLOCATABLE 变量而不是指针在 Fortran 中创建链接列表吗?
- python - Python 在一行中查找单词并将其附加到一个新的文本文件中
- r - 从向量制作对称矩阵
- django - 如何使用 Django-quill-editor 从数据库中以 Quill 格式提取数据并提供给 Quill 表单
- python - Discord Python Bot 播放音乐 - url 是缺少的必需参数