Java 短六角字符串

Java 短六角字符串,java,Java,有方法Integer.toHexString()和Long.toHexString()。出于某种原因,他们没有实现Short.toHexString() 将短字符串转换为十六进制字符串的规范方法是什么 不可能使用Integer.toHexString(),因为Integer.toHexString(-33)等于ffffff df,这不是一个短值。不是实现这一点的最简单方法,但我认为您可以通过将其转换为字节数组,然后将其转换为十六进制字符串来实现 short a = 233; byte[] r

有方法
Integer.toHexString()
Long.toHexString()
。出于某种原因,他们没有实现
Short.toHexString()

将短字符串转换为十六进制字符串的规范方法是什么


不可能使用
Integer.toHexString()
,因为
Integer.toHexString(-33)
等于
ffffff df
,这不是一个短值。

不是实现这一点的最简单方法,但我认为您可以通过将其转换为字节数组,然后将其转换为十六进制字符串来实现

 short a = 233;
 byte[] ret = new byte[2];

 ret[0] = (byte)(a & 0xff);
 ret[1] = (byte)((a >> 8) & 0xff);

 StringBuilder sb = new StringBuilder();
 for (byte b : ret) {
    sb.append(String.format("%02X ", b));
 }

我认为这样就可以了。

您可以将您的
Integer.toHexString
转换为十六进制字符串作为短值

整数
32位
Short
16位
。因此,对于
短值
,您只需从
十六进制字符串
中删除转换为
整数
,即可获得
短值
十六进制字符串

Integer -> -33 = 11111111 11111111 11111111 11011111  == Hex = ffffffdf
Short   -> -33 =                   11111111 11011111  == Hex =     ffdf
因此,只需使用
十六进制字符串的最后
4
个字符即可获得所需内容

所以,你想要的是:-

Short sh = -33;
String intHexString = Integer.toHexString(sh.intValue());
String shortHexString = intHexString.substring(4);

我想那会有用的。

是的,只需取两个最低有效字节。


这是表示法的一个基本功能。

如果在您的系统中
short
表示为16位,您也可以简单地执行以下操作

String hex = Integer.toHexString(-33 & 0xffff);

这也应该在短期内起作用

UnicodeFormatter.charToHex((char)c);

您可以在此处下载UniocdeFormatter.java:

将4个最不重要的十六进制字符(从Integer.toHexString)替换为子字符串是否足够?在已发布的案例中,它将是有效的(
ffdf
),并且我认为它将普遍适用,因为两者都是二者的补充。。实际上,即使是这个
System.out.format(“%x”,-33)
也给出了
ffffdf
。我想这可能与内存中原语的表示有关。Formatter()可以进行转换,但这太过分了。啊!!我为什么不这么想+(致你1封信。)