加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读