将32字节数组转换为32位字符串

时间:2018-05-30 17:34:26

标签: java

我有以下代码。我有一个32长度的字符串,它被转换为字节数组。问题是我需要将其转换为32长度的字符串。问题是,它以64长度字符串的形式返回。我应该看一些魔法吗?

class Go {

    public void run() {
        String testString = "12345678901234567890123456789012";

        byte[] bytesData = testString.getBytes();
        StringBuilder st = new StringBuilder();

        for (byte b : bytesData) {
            st.append(String.format("%2d", b));
        }

        System.out.println(st.toString());
    }


    public static void main(String[] v2) {
        Go v = new Go();
        v.run();
    }
}

2 个答案:

答案 0 :(得分:2)

您使用此String构造函数:public String(byte[] bytes)Oracle Doc

String testString = "12345678901234567890123456789012";
System.out.println(testString);                          //12345678901234567890123456789012

byte[] bytesData = testString.getBytes();

String res = new String(bytesData);
System.out.println(res);                                 //12345678901234567890123456789012

答案 1 :(得分:2)

@azro给了你正确的答案,但为了教育,我会指出你做错了什么。当您在字符串中获得byte的{​​{1}}值时,您将获得ascii值。因此,当您使用char时,您获得了String.format("%2d", b)本身的int值,而不是它所代表的char。相反,您可以将循环更改为以下内容:

char

但是再次使用@azro所说的话。我只是解释如果你对引擎的工作方式感兴趣,你可以怎么做。