int数値を16進文字列としてフォーマットしたい。 System.out.println(Integer.toHexString(1));
印刷します1
が、私はそれが欲しいです0x00000001
。それ、どうやったら出来るの?
7 に答える
これを試して
System.out.println(String.format("0x%08X", 1));
String.formatを使用して、整数を16進文字列としてフォーマットできます。
System.out.println(String.format("0x%08X", 1));
つまり、ゼロで埋めて、合計幅を8にします。1は16進数に変換されます。上記の行は次のように0x00000001
なります。
System.out.println(String.format("0x%08X", 234));
与える:0x000000EA
JavaのFormatterクラスに文書化されているフォーマット構文から:
Integer intObject = Integer.valueOf(1);
String s = String.format("0x%08x", intObject);
System.out.println(s);
Javaについてはあまり詳しくはわかりませんが、toHexString関数からの出力を「0」から長さ8まで埋めることができる方法が必要です。「0x」が常に先頭にある場合は、それに取り組むだけです。最初の文字列。
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
PrintStreamでjava.util.Formatterまたはprintfメソッドを使用できます。
冗長性が少ない:
System.out.printf("0x%08x", 1); //"Use %0X for upper case letters