有方法Integer.toHexString()
和Long.toHexString()
。由于某种原因,他们没有实施Short.toHexString()
.
将 Short 转换为十六进制字符串的规范方法是什么?
无法使用Integer.toHexString()
,因为Integer.toHexString(-33)
equalsffffffdf
不是一个短值。
有方法Integer.toHexString()
和Long.toHexString()
。由于某种原因,他们没有实施Short.toHexString()
.
将 Short 转换为十六进制字符串的规范方法是什么?
无法使用Integer.toHexString()
,因为Integer.toHexString(-33)
equalsffffffdf
不是一个短值。
如果在您的系统short
中表示为 16Bit,您也可以简单地执行以下操作。
String hex = Integer.toHexString(-33 & 0xffff);
是的,您可以简单地取两个最不重要的字节。
这是二进制补码表示的一个基本特征。
您可以将Integer.toHexString
in 转换为短值的十六进制字符串。
Integer
属于32 bit
,Short
属于16 bit
. 因此,您只需从Hex String
for中删除 16 个最高有效位short value
即可转换为integer
, 以获得Hex String
for Short
。
Integer -> -33 = 11111111 11111111 11111111 11011111 == Hex = ffffffdf
Short -> -33 = 11111111 11011111 == Hex = ffdf
因此,只需使用的最后一个4
字符Hex String
即可获得所需的内容。
所以,你想要的是: -
Short sh = -33;
String intHexString = Integer.toHexString(sh.intValue());
String shortHexString = intHexString.substring(4);
我认为那会奏效。
这也应该适用于短期
UnicodeFormatter.charToHex((char)c);
您可以在此处下载 UniocdeFormatter.java:http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/i18n/text/examples/UnicodeFormatter 。爪哇
这不是最简单的方法,但我可以通过转换为字节数组然后将其转换为十六进制字符串来完成。
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));
}
我认为这几乎可以做到。