【问题标题】:Joining two Hex Strings into readable data in Java将两个十六进制字符串连接成 Java 中的可读数据
【发布时间】:2025-11-26 01:55:01
【问题描述】:

我需要将两个十六进制字符串合并为一个。 第一个是这样组成的:

 while(i=0;i<10;i++){
    int ch = inStream.read();
           String hexch="";
           if (ch >= 0) {
             hexch += Integer.toHexString(ch);  
           }  

在流中,我从串行端口重新接收字符 ST=0 第二个是这样的:

            String one = ";sp=16;"
            String sqhex="";
            byte[] data = one.getBytes();
                int j;
                for (j=0;j<data.length;j++)
                {
                    sqhex+=Integer.toHexString(data[j]);
                }

我需要用两个字符串组成一个字符串,让我得到这个:“ST=1;sp=16;”在十六进制。为此,我这样做了:

String mensagem =""
mensagem = hexch + sqhex;

问题是生成的十六进制字符串,

53543d31d3b73703d31363b

不代表我需要什么。而不是“ST=1;sp=16;”我得到“ST=1Ó·7Óc”

是否有合并十六进制字符串来构建我需要的东西?

谢谢

【问题讨论】:

  • 不知道你在问什么。试着想出一个真实的 minimal reproducible example;但除此之外:请定义“加入”十六进制字符串的含义。你的意思是“数字加法”吗?还是只是“a”+“b”=“ab”连接?!除此之外:请在提交前仔细阅读您的输入;这东西只是一团糟
  • 连接十六进制数字序列如何产生ST=1Ó·7Óc?你没有向我们展示什么代码?
  • @GhostCat 我的意思是进行串联。我无法上传可验证的示例,因为整个代码还有我上面解释过的其他依赖项。
  • 那你没有读到那个minimal reproducible example链接。这与上传所有您的代码无关。它是关于提供显示您的问题的代码。
  • @VGR 操作结果为 53543d31d3b73703d31363b。这一点,当翻译成字符串结果为 ST=1Ó·7Óc 而不是 ST=1;sp=16;如我所愿

标签: java string merge hex


【解决方案1】:

这是因为 Integer.toHexString(ch) 的长度不同。所以你的编码过程的结果是不可解码的。

【讨论】: