我想byte[]
在Java中将(正)原语长文本格式转换为a 。
例如,一种简单的方法是: 123 => "123" => [49, 50, 51]
但是,长时间转换为String
堆分配a String
,我试图避免这种情况在我的无GC库中使用。我宁愿直接在预分配的字节数组上呈现它。
因此,我的问题是如何直接从长整数转换为byte[]
表示形式,如果我使用String构造函数进行调用,则(对于上面的示例)将给我“ 123”。为了澄清起见,我不是想将long编码为byte[]
二进制形式,而是将其编码为文本形式。
谢谢!ñ
这个简单的程序:
long l = 123;
int size = (int)(Math.log10(l)+1);
byte[] array = new byte[size];
for (int i = 0; i < size; i++) {
long temp = (long) Math.pow(10, size - i - 1);
array[i] = (byte) ((l / temp) + 48);
l = l % temp;
}
System.out.println(Arrays.toString(array)); // [49, 50, 51]
我已经以毫秒为单位对当前时间进行了测试,并且可以按预期工作:
long l = System.currentTimeMillis();
...
System.out.println(Arrays.toString(array));
输出:
1406485727149
[49, 52, 48, 54, 52, 56, 53, 55, 50, 55, 49, 52, 57]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句