我想编写一个带有byte
数据的文本字段的java程序。我的程序输出应为string
。我怎样才能做到这一点。任何意见都表示赞赏。
输入
85f960f0 82868260 f4f78486 60f8f6f
输出是字符串格式,如客户,英雄,英语..
我打算编写一个简单的java程序。
提前致谢。
很抱歉第一次错过了详情。我现在在学习阶段。
答案 0 :(得分:0)
假设您有 byte[] bytes
并且可以使用 bytes.toString()
转换它,或者您可以逐字节更改
byte[] bites = new byte[]{24,4,72,56};
for(int i = 0; i < bites.length; i++)
System.out.println(new String(bites, i,1));
答案 1 :(得分:0)
您的问题没有为完整答案提供足够的详细信息。假设片段&#34; 85f960f0 82868260 f4f78486 60f8f6f&#34;是你想要的输出......
例如。
byte[] valueFromTextField = "hello world foo bar".getBytes();
StringBuilder builder = new StringBuilder();
int i = 0;
for (byte element : valueFromTextField) {
if (i % 4 == 0 && builder.length() > 0) {
builder.append(" ");
}
builder.append(String.format("%02x", element));
i++;
}
System.out.println(builder.toString());
输出
68656c6c 6f20776f 726c6420 666f6f20 626172
答案 2 :(得分:0)
String hexadecimals = textField.getText();
hexadecimals = hexadecimals.replaceAll("[^0-9A-Fa-f]", ""); // Remove garbage
int nn = hexadecimals.length();
if (nn % 2 != 0) {
JOptionPane.showMessageDialog(null, "... must be even", JOptionPane.ERROR_MESSAGE);
return "";
}
byte[] bytes = new byte[nn / 2];
for (int i = 0; i < nn - 1; i += 2) {
int b = Integer.parseInt(hexadecimals.substring(i, i + 2), 16);
bytes[i] = (byte) b;
}
return new String(bytes, StandardCharsets.UTF_8);
这使用整数范围内的基数为16(0-9A-F)的Integer.parseInt来忽略负字节值。
要将这些字节转换为文本(在Java中是Unicode以保存字符的任何组合),需要知道这些字节所在的文本编码。这里我使用UTF-8,但是需要遵守UTF- 8多字节格式。