Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字节到文本的Java解密_Java_Byte - Fatal编程技术网

从字节到文本的Java解密

从字节到文本的Java解密,java,byte,Java,Byte,我想写一个java程序,它接受一个包含byte数据的文本字段。我的程序的输出应该是字符串。我怎样才能做到这一点。欢迎您的任何意见 输入是 85f960f0 82868260 f4f78486 60f8f6f 输出为字符串格式,如customer、hero、english 我计划写一个简单的java程序 提前谢谢 很抱歉第一次漏掉了细节。我现在正处于学习阶段 假设您有字节[]字节,您可以使用字节.toString()对其进行转换,也可以逐个字节进行更改 byte[] bites = new byt

我想写一个java程序,它接受一个包含
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);