首页 > 解决方案 > 将字符串中的 0x80~0xFF 替换为其他值

问题描述

我需要修改字符串,但“替换”不适用于从 0x80 开始的所有内容。

以十六进制表示的接收数据示例31 32 33 81 82 35。但我得到的 StringBuilder 是“313233818235”(我希望看到“3132333435”)。知道如何解决吗?我正在使用“windows-1252”字符集。

Scanner scanner = new Scanner (new BufferedReader(new InputStreamReader(socket.getInputStream(),charset))).useDelimiter(mDelimiter);

                    rxMsg = (scanner.next()).replace("\u0081\u0082","\u0034");

                    byte[] byteArray = rxMsg.getBytes(charset);

                    StringBuilder stringBuilder = new StringBuilder();
                    for(byte b: byteArray) {
                        stringBuilder.append(String.format("%02x", b));
                    }

标签: javastringreplaceunicode

解决方案


推荐阅读