我有以下代码。我有一个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();
}
}
答案 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所说的话。我只是解释如果你对引擎的工作方式感兴趣,你可以怎么做。