如何将保存在字符串中的Longs改回Longs

时间:2018-09-11 18:27:29

标签: java string long-integer decoder

我想做的是将4x8bytes保存为64bit Long。 并再次将64位长解码为4x8字节。

我知道您可能不理解,但是我有一个使用字节的编码器 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;
}

解码器的工作原理我已经用编码器对其进行了测试,并直接输入编码器的输出。 因此必须存在读取错误。

我实际上是无语的,而且我没有什么想法可以解决这个问题...

真诚的感谢Richee。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

要解决此问题,我尝试从我的编码器和解码器(充气机)中卸下充气机。 在那之后它如此工作了,现在我想知道为什么放气机/充气机会“破坏”我的StreamHeader。...

反正很抱歉花时间...