简称toHexString
有Integer.toHexString()
和Long.toHexString()
。 由于某种原因,他们没有实现Short.toHexString()
。
将Short转换为hex字符串的规范方法是什么?
使用Integer.toHexString()
是不可能的,因为Integer.toHexString(-33)
等于ffffffdf
,它不是短值。
如果在您的系统中, short
表示为16Bit,您也可以简单地执行以下操作。
String hex = Integer.toHexString(-33 & 0xffff);
是的,你可以简单地取两个最不重要的字节。
这是Two’s Complement表示的基本特征。
您可以将Integer.toHexString
转换为hex字符串以获得短值。
Integer
为32 bit
, Short
为16 bit
。 因此,您可以从Hex String
删除16个最高有效位,将short value
转换为integer
,以获得Hex String
。
Integer -> -33 = 11111111 11111111 11111111 11011111 == Hex = ffffffdf Short -> -33 = 11111111 11011111 == Hex = ffdf
因此,只需使用Hex String
的最后4
字符即可获得所需内容。
所以,你想要的是: –
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。 java的
这不是最简单的方法,但我可以通过转换为字节数组然后将其转换为hex字符串来完成它。
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)); }
我认为这几乎可以做到。