从字符串到长数组的转换不起作用

德马科

很抱歉,标题令人迷惑,但我不知道该如何用更好的描述问题。

我正在编写一个程序,将字符串转换为应可逆的长向量(以回读信息)。转换为长数组对我来说似乎很好。我使用base 64作为中间步骤,以便以更好的方式增加字节数,以处理我必须要做的其他处理部分。

    public long[] str2long(String s)
    {
        final byte[] authBytes = s.getBytes(StandardCharsets.UTF_8);
        final String encoded = Base64.getEncoder().encodeToString(authBytes);
        long[] array = new long[encoded.length()];
        int i=0;
        for(char c: encoded.toCharArray()){
            array[i] = (long) c;
//             System.out.print(array[i] + " ");
             i++;
        }
        return array;
    }

问题在于,即使更难理解,以下代码也似乎与上面的代码完全相反,实际上并非如此,而基数64的反向转换会产生此错误:Illegal base64 character 5b

public String long2str(long[] array)
{
    char[] chArray = new char[array.length];
    int i=0;
    for(long c: array){
        chArray[i] = (char) c;
        i++;
    }
    String s = Arrays.toString(chArray);
    final byte[] decoded= Base64.getDecoder().decode(s);
    try {
        s = new String(decoded, "UTF-8");
        return s;
    } catch (UnsupportedEncodingException ex) {
        Logger.getLogger(Encryption.class.getName()).log(Level.SEVERE, null, ex);
    }
    return null;
}

因此,我的问题是:

我缺少的第二种方法有什么不同?我认为可能是StandardCharsets.UTF_8,但我不确定。

如何使该功能long2str(long[] array)正常工作long2str(str2long(String s)) == String s

如果您愿意,我可以发布用于验证此代码的测试用例。

他们是

在您的long2str方法中,更改:

String s = Arrays.toString(chArray);

到:

String s = new String(chArray);

使用时,Arrays.toString()您将获得String形式的[Y, W, J, j, Z, G, V, m, Z, 2, h, ...],这不是有效的基数64字符串。要获取String包含的所有字符的chArray,您应该使用适当的String构造函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

字符到字符串的转换不起作用

来自分类Dev

Struts 2中的字符串到字符串类型转换不起作用?

来自分类Dev

构造函数和数组不起作用,字符串到字符串[]

来自分类Dev

Delphi RIO-当Ansi字符串是const数组的一部分时,Ansi到字符串的转换不起作用

来自分类Dev

字符串到 int/float 转换在树莓派上的 python 中不起作用

来自分类Dev

将字符串转换为数组-jQuery.inArray()不起作用

来自分类Dev

从AsyncTask OnpostExecute传递字符串数组到Mainactivity不起作用

来自分类Dev

我的数组列表中的字符串迭代到 textview 不起作用

来自分类Dev

Java字符串到长转换

来自分类Dev

字符串到长转换

来自分类Dev

字符串转换器程序不起作用

来自分类Dev

将字符串转换为双倍不起作用?

来自分类Dev

字符串数字到整数不起作用PHP

来自分类Dev

Automapper 字符串到 Guid 不起作用

来自分类Dev

JS browserify要求从字符串数组不起作用

来自分类Dev

字符串数组toUpperCase()不起作用

来自分类Dev

Matlab结构数组:字符串不起作用

来自分类Dev

C - 指向字符串数组的指针不起作用

来自分类Dev

PHP Mysql查询中的长字符串不起作用

来自分类Dev

替换字符串数组中的所有字符串不起作用

来自分类Dev

字符串equals()不起作用

来自分类Dev

字符串格式不起作用

来自分类Dev

字符串比较不起作用

来自分类Dev

反转字符串,不起作用

来自分类Dev

分割字符串不起作用

来自分类Dev

字符串比较不起作用

来自分类Dev

字符串组合不起作用

来自分类Dev

JTextField 字符串不起作用

来自分类Dev

将字符串数组转换为长数组