31

int数値を16進文字列としてフォーマットしたい。 System.out.println(Integer.toHexString(1));印刷します1が、私はそれが欲しいです0x00000001。それ、どうやったら出来るの?

4

7 に答える 7

73

これを試して

System.out.println(String.format("0x%08X", 1));
于 2012-12-13T02:01:37.153 に答える
25

String.formatを使用して、整数を16進文字列としてフォーマットできます。

   System.out.println(String.format("0x%08X", 1));

つまり、ゼロで埋めて、合計幅を8にします。1は16進数に変換されます。上記の行は次のように0x00000001なります。

   System.out.println(String.format("0x%08X", 234));

与える:0x000000EA

于 2012-12-13T02:01:13.920 に答える
5

JavaのFormatterクラスに文書化されているフォーマット構文から:

Integer intObject = Integer.valueOf(1);
String s = String.format("0x%08x", intObject);
System.out.println(s);
于 2012-12-13T02:02:04.117 に答える
1

Javaについてはあまり詳しくはわかりませんが、toHexString関数からの出力を「0」から長さ8まで埋めることができる方法が必要です。「0x」が常に先頭にある場合は、それに取り組むだけです。最初の文字列。

于 2012-12-13T02:04:59.737 に答える
1

Java 17+

16進数への変換とフォーマット専用の新しい不変クラスがあります。最も簡単な方法HexFormat::toHexDigitsは、先行ゼロを含むを使用することです。

String hex = "0x" + HexFormat.of().toHexDigits(1);
// 0x00000001

注意"0x"してください。このようなメソッドは定義されたプレフィックスとサフィックスを無視するため、プレフィックスと連結する必要があります。そのため、次のスニペットは期待どおりに機能しません(HexFormat::formatHexメソッドのみが機能します)。

String hex = HexFormat.of().withPrefix("0x").toHexDigits(1);
// 00000001

int値の8つの16進文字を返します。(4 bits)値の最上位から最下位までの各ニブルは、のようにフォーマットされtoLowHexDigit(nibble)ます。区切り文字、接頭辞、接尾辞は使用されません。

またはHexFormat::formatHex、2つの16進文字にフォーマットする利点と、以下を含むプレフィックスStringBuilderとして使用します。Appendable"0x"

各バイト値は、プレフィックス、大文字または小文字から選択された2つの16進文字、およびサフィックスとしてフォーマットされます。

StringBuilder hex = HexFormat.of()
    .formatHex(new StringBuilder("0x"), new byte[] {0, 0, 0, 1});
// 0x00000001
StringBuilder hex = HexFormat.of()
    .formatHex(new StringBuilder("0x"), ByteBuffer.allocate(4).putInt(1).array());
// 0x00000001
于 2021-10-05T16:46:59.270 に答える
0

PrintStreamでjava.util.Formatterまたはprintfメソッドを使用できます。

于 2012-12-13T02:01:27.107 に答える
0

冗長性が少ない:

System.out.printf("0x%08x", 1); //"Use %0X for upper case letters
于 2021-07-15T20:50:44.647 に答える