java - 将字节数组转换为转义字符串

标签 java ascii

我需要一些帮助将 java 字节数组转换为 7 位 ASCII 字符串。然而,我得到 8 位序列,并且需要将任何不可读的字符转义为转义序列。有没有一个简单的解决方案,或者我需要构建自己的解决方案?

看到 7 位 ASCII 中的可读字符范围是连续的,我现在想到的是以下内容:

for( int i = 0; i < buffer.length; i++ ) {
   int codePoint = ( (int) buffer[ i ] ) & 255;
   if( 0x20 <= codePoint && codePoint <= 0x7e ) {
      res = res + String( (char) codePoint );
   } else {
     String c = Integer.toHexString( codePoint );
     if( c.length() < 2 ) {
       c = "0" + c;
     }
     res = res + "\\0x" + c;
   }
}

然而,对于如此简单的转换来说,这似乎需要大量工作。有更好的办法吗?

此外,我可能需要对从字节数组转换为字符串的数据执行相同的操作。这种情况下有没有更简单的解决方案?

最佳答案

  public static String escape(byte[] data) {
    StringBuilder cbuf = new StringBuilder();
    for (byte b : data) {
      if (b >= 0x20 && b <= 0x7e) {
        cbuf.append((char) b);
      } else {
        cbuf.append(String.format("\\0x%02x", b & 0xFF));
      }
    }
    return cbuf.toString();
  }

您可以使用format减少措辞的方法。

请注意,此方法是安全的,因为 ASCII 范围与 Java 字符串使用的 UTF-16 编码的较低范围相匹配。

关于java - 将字节数组转换为转义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7487917/

相关文章:

java - Eclipse 插件自定义 View 标记数

C++::将ASCII值转换为字符串

bash - 在 bash 中进行 Ascii/Hex 转换

python - 如何在 python 中生成 8 个不同的随机数?

java - 运行时生成可执行jar

java - XmlAdapter 和 JSON 的 MOXy 异常

java - 要存储在数组中的字符的整数值

python - Bash 与 Python 中视觉相似字符串的 SHA256 有所不同

java - 如何在循环的服务器请求中使用 Phaser?

java - 覆盖 toString 以删除元素之间的空格