Javaで整数値を2桁の16進値に変更する必要があります。これを行う方法はありますか。ありがとう
私の最大数は63で、最小数は0になります。小さい値には先行ゼロが必要です。
Javaで整数値を2桁の16進値に変更する必要があります。これを行う方法はありますか。ありがとう
私の最大数は63で、最小数は0になります。小さい値には先行ゼロが必要です。
回答:
String.format("%02X", value);
aristarが提案するX
代わりにを使用する場合は、を使用する必要はありません。x
.toUpperCase()
Integer.toHexString(42);
Javadoc:http: //docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toHexString(int)
ただし、これにより2桁を超える場合があることに注意してください。(整数は4バイトなので、8文字を取り戻す可能性があります。)
シングルバイト値(255以下)のみを扱っていることが絶対に確実である限り、パディングを取得するためのちょっとしたハックがあります。
Integer.toHexString(0x100 | 42).substring(1)
Javaのゼロを使用した左パディング整数(非10進形式)でのより多くの(そしてより良い)ソリューション。
String.format("%02X", (0xFF & value));
を使用しInteger.toHexString()
ます。1桁しかない場合は、先頭にゼロを付けることを忘れないでください。整数が255より大きい場合、2桁以上になります。
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(myInt));
if (sb.length() < 2) {
sb.insert(0, '0'); // pad with leading zero if needed
}
String hex = sb.toString();
StringBuilder
実際の使用は改善されていますか?pastebin.com/KyS06JMz
これを使用して、バイトごとにスペースで区切られた整数の同等の16進値を表す文字列を取得します EX:4バイトで260の16進値= 00 00 01 04
public static String getHexValString(Integer val, int bytePercision){
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(val));
while(sb.length() < bytePercision*2){
sb.insert(0,'0');// pad with leading zero
}
int l = sb.length(); // total string length before spaces
int r = l/2; //num of rquired iterations
for (int i=1; i < r; i++){
int x = l-(2*i); //space postion
sb.insert(x, ' ');
}
return sb.toString().toUpperCase();
}
public static void main(String []args){
System.out.println("hex val of 260 in 4 bytes = " + getHexValString(260,4));
}