java – 将long转换为“byte-array-ed”文本,没有堆分配
发布时间:2020-12-15 04:43:50 所属栏目:Java 来源:网络整理
导读:我想在 Java中以文本形式将(正)原始long转换为byte []. 例如,一种简单的方法是:123 = “123”= [49,50,51] 但是,将long转换为String heap-分配一个String,我试图为我的GC-free库避免这种情况.我宁愿直接在预先分配的字节数组上渲染它. 因此,我的问题是如何
我想在
Java中以文本形式将(正)原始long转换为byte [].
例如,一种简单的方法是:123 => “123”=> [49,50,51] 但是,将long转换为String heap-分配一个String,我试图为我的GC-free库避免这种情况.我宁愿直接在预先分配的字节数组上渲染它. 因此,我的问题是如何直接从long转换为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,51] 我已经以毫秒为单位对当前时间进行了测试并按预期工作: long l = System.currentTimeMillis(); ... System.out.println(Arrays.toString(array)); 输出: 1406485727149 [49,52,48,54,56,53,55,49,57] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |