为了账号安全,请及时绑定邮箱和手机立即绑定

如何将保存在字符串中的多头更改回多头

如何将保存在字符串中的多头更改回多头

慕标琳琳 2021-09-15 10:22:24
我想要做的是将 4x8bytes 保存为 64bit Long。并将该 64 位 Long 再次解码为 4x8bytes。我知道你可能不明白,但我有一个编码器,它使用 8 位字节来制作 64 位长。我正在保存其中的多个示例:“-223784 2432834 -34233566”,我想读取每个数字,当“”是字符并将其放入 long[] 时将其拆分。目前我有这个代码:FileInputStream fin = new FileInputStream( IOUtils.path + File.separator + "eclipse.hm" );    String c = "";    long[] longs = new long[1000000];    int b,ggg=0;    while((b=fin.read())!=-1) {        if( (char)b==' ' ) {            longs[ggg++] = Long.parseLong(c);            c = "";        } else {            c+=(char) b;        }        fetched++;    }    fin.close();我的“解码器”的方法如下:public static Object decode(long[] input) throws DataFormatException, IOException, ClassNotFoundException {    byte[] toInflate = BitSet.valueOf(input).toByteArray();    Inflater inflater = new Inflater();    inflater.setInput(toInflate);    byte[] deflated = new byte[ toInflate.length*2 ];    inflater.inflate(deflated);    inflater.end();    ObjectInputStream ois = new ObjectInputStream( new ByteArrayInputStream(deflated) );    Object r = ois.readObject();    ois.close();    return r;}解码器工作我用我的编码器测试过,直接输入编码器的输出。所以肯定有读取错误。我真的无语了,而且我没有任何想法来解决这个问题......
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您可以使用一些内置的 String 函数来拆分字符串。之后,您需要对拆分步骤后获得的所有元素进行一些从 string 到 long 的转换。


查看完整回答
反对 回复 2021-09-15
?
萧十郎

TA贡献1815条经验 获得超13个赞

为了解决这个问题,我尝试从我的编码器和解码器(充气器)中移除 Deflater。在那之后它起作用了,所以现在我想知道为什么 Deflater/Inflater 会“破坏”我的 StreamHeader ....

无论如何,抱歉耽误了您的时间...


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 189 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信