从字节到文本的Java解密
我想写一个java程序,它接受一个包含从字节到文本的Java解密,java,byte,Java,Byte,我想写一个java程序,它接受一个包含byte数据的文本字段。我的程序的输出应该是字符串。我怎样才能做到这一点。欢迎您的任何意见 输入是 85f960f0 82868260 f4f78486 60f8f6f 输出为字符串格式,如customer、hero、english 我计划写一个简单的java程序 提前谢谢 很抱歉第一次漏掉了细节。我现在正处于学习阶段 假设您有字节[]字节,您可以使用字节.toString()对其进行转换,也可以逐个字节进行更改 byte[] bites = new byt
byte
数据的文本字段。我的程序的输出应该是字符串
。我怎样才能做到这一点。欢迎您的任何意见
输入是
85f960f0 82868260 f4f78486 60f8f6f
输出为字符串格式,如customer、hero、english
我计划写一个简单的java程序
提前谢谢
很抱歉第一次漏掉了细节。我现在正处于学习阶段 假设您有
字节[]字节
,您可以使用字节.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));
byte[]bites=新字节[]{24,4,72,56};
for(int i=0;i
您的问题没有提供足够的详细信息,无法给出完整的答案。假设片段“85f960f0 82868260 f4f78486 60f8f6f”是您想要的输出
- 在循环中使用%x模式将字节数组转换为十六进制字符串李>
- 如有必要,使用%02x将每个八位字节填充为2位
- 如果每8个字符需要空格,可以使用%运算符检查计数器是否可被4整除
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
String十六进制=textField.getText();
十六进制=十六进制。replaceAll(“^0-9A-Fa-f]”,“);//清除垃圾
int nn=十六进制长度();
如果(nn%2!=0){
JOptionPane.showMessageDialog(null,“…必须为偶数”,JOptionPane.ERROR\u消息);
返回“”;
}
字节[]字节=新字节[nn/2];
对于(int i=0;i
这使用整数范围内基数为16(0-9A-F)的Integer.parseInt忽略负字节值
要将这些字节转换为文本(在Java中是Unicode以保存任何字符组合),需要知道这些字节的编码文本。这里我使用的是UTF-8,但是需要附加UTF-8多字节格式。到目前为止您做了什么?输入格式是什么?请添加预期输入和输出的示例。
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);