是否有任何方法可将整数值转换为' n' java中的数字ascii字节数组。像
IntToBytes( int value, int digits );
int a = 1234;
IntToBytes( a, 4 );
results will be byte array of {1, 2, 3, 4}
IntToBytes( a, 5 );
results will be byte array of {0, 1, 2, 3, 4}
我在网上搜索没找到任何方法。请帮帮我
答案 0 :(得分:1)
我认为您的确切问题是如何将int
数字表示转换为十进制表示法中的一系列数字。
我不知道任何现有的(即库)方法,但您可以使用其中一种显而易见的方法轻松编写自己的方法。其中一个就是重复从分裂中取出余数(a.k.a.Horner的方法)。另一个可能是将int
转换为String
,然后通过转换将此String
个字符转换为bytes
。
答案 1 :(得分:1)
您可以使用String.format()
功能
该示例可能对您有所帮助
String s = String.format("%06d", 1234);
System.out.println(s.toCharArray());
希望有所帮助
答案 2 :(得分:1)
直接从我的项目Euler库。 :)
算法执行mod 10
获取最后一位数字,然后将10
除以shift
数字右侧并删除最后一位数字。这一直重复到零。在我的算法中,我返回一个数组,因此我使用log10
来获取确切的位数。您可以选择将其固定在while循环中并除以10
,直到等于0
并将mod 10
附加到List。
public static int[] getDigits(long n) {
final int digits = numDigits(n);
final int[] d = new int[digits];
int i = 0;
while (n > 0) {
d[i] = (int)(n % 10);
n /= 10;
i++;
}
return d;
}
public static int numDigits(final long n) {
return (int) Math.log10(n) + 1;
}
调整它以返回一个字节数组应该是非常简单的。
答案 3 :(得分:1)
如果要获取具有十进制表示法数字值的数组,可以创建如下函数:
public static byte[] intToBytes(int number, int digits) {
byte[] results = new byte[digits];
/* Start at the end of the array. i.e. 1234, should be converted to {1, 2, 3, 4} */
for (int i = digits - 1; i >= 0; i--) {
results[i] = (byte) (number % 10);
number = number / 10;
}
return results;
}
如果你想要的是一个带有每个数字的ascii值的数组,你可以使用String.format
并将String转换为字节数组。
(1234应转换为{' 1',' 2',' 3',' 4'} .ascii值将是{49,50,51,52}
代码可以是:
public static byte[] intToBytes(int number, int digits) {
String format = "%0" + digits + "d";
String numberAsString = String.format(format, number);
char[] numberAsCharArray = numberAsString.toCharArray();
byte[] result = new byte[digits];
for (int i = 0; i < numberAsCharArray.length; i++) {
result[i] = (byte) numberAsCharArray[i];
}
return result;
}
答案 4 :(得分:0)
在apache commons lang中,有一个类org.apache.commons.lang3.Conversion
,其方法为longToByteArray。这可能对您尝试做的事情有所帮助。
答案 5 :(得分:0)
我认为你应该使用模数运算。 您必须创建一个数字大小的char数组,然后从末尾迭代,在该位置插入值%10 - '0'(最后一位数转换为char)并在每次迭代中将值除以10。当value = 0时,您只需在剩余位置插入“0”。