我需要在Java中将整数值更改为两位数的十六进制值。谢谢
我的最大数字将是63,最小的数字将是0。我希望小数值的前导零。
我需要在Java中将整数值更改为两位数的十六进制值。谢谢
我的最大数字将是63,最小的数字将是0。我希望小数值的前导零。
Answers:
String.format("%02X", value);
如果使用X
而不是x
aristar的建议,则无需使用.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中使用零填充Left填充整数(非十进制格式)的更多(更好)解决方案。
String.format("%02X", (0xFF & value));
使用Integer.toHexString()
。如果只用一位数字结尾,请不要忘记用前导零填充。如果您的整数大于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
我用它来获取一个字符串,该字符串表示每个字节EX的整数等效十六进制值,该空格之间用空格分隔 :4个字节中260的十六进制值= 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));
}
根据GabrielOshiro的说法,如果要将整数格式设置为长度8,请尝试以下操作
String.format("0x%08X", 20) //print 0x00000014