Ответ 1
Если в вашей системе short
представлен как 16Bit, вы также можете просто сделать следующее.
String hex = Integer.toHexString(-33 & 0xffff);
Существуют методы Integer.toHexString()
и Long.toHexString()
. По какой-то причине они не реализовали Short.toHexString()
.
Что такое канонический метод преобразования Short в шестую строку?
Невозможно использовать Integer.toHexString()
, потому что Integer.toHexString(-33)
равно ffffffdf
, которое не является коротким значением.
Если в вашей системе short
представлен как 16Bit, вы также можете просто сделать следующее.
String hex = Integer.toHexString(-33 & 0xffff);
Да, вы можете просто взять два наименее значимых байта.
Это основная особенность представления Two Complement.
Вы можете преобразовать ваш Integer.toHexString
в шестнадцатеричную строку для короткого значения.
Integer
имеет значение 32 bit
, а Short
имеет значение 16 bit
. Таким образом, вы можете просто удалить 16 наиболее значимых бит из Hex String
для short value
, преобразованных в Integer
, чтобы получить Hex String
для 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.java
Не самый простой способ сделать это, но я могу это сделать, преобразовывая в массив байтов, а затем преобразуя его в шестую строку.
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));
}
Я думаю, что в значительной степени это сделает.