15

メソッドInteger.toHexString()とがありLong.toHexString()ます。何らかの理由で、彼らは実装しませんでしたShort.toHexString()

Shortを16進文字列に変換する標準的な方法は何ですか?

等しいは短い値ではないInteger.toHexString()ため、使用できません。Integer.toHexString(-33)ffffffdf

4

5 に答える 5

25

システムshortで16ビットとして表されている場合は、次のことも簡単に実行できます。

String hex = Integer.toHexString(-33 & 0xffff);
于 2012-11-13T07:56:03.970 に答える
4

はい、あなたは単に2つの最下位バイトを取ることができます。

これは、2の補数表現の基本的な機能です。

于 2012-11-13T07:50:38.400 に答える
2

Integer.toHexStringinを短い値の16進文字列に変換できます。

Integer32 bit、およびShortのです16 bit。したがって、forに変換されたHex Stringforから最上位16ビットを削除して、 forを取得できます。short valueintegerHex StringShort

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);

私はそれがうまくいくと思います。

于 2012-11-13T07:45:19.763 に答える
1

これも短期間で機能するはずです

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

于 2014-04-05T05:30:31.110 に答える
0

これを行う最も簡単な方法ではありませんが、バイト配列に変換してから16進文字列に変換することで実行できます。

 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));
 }

私はそれがほとんどそれをするだろうと思います。

于 2012-11-13T07:42:37.880 に答える