【问题标题】:Java: Converting byte string to byte arrayJava:将字节字符串转换为字节数组
【发布时间】:2018-11-10 15:07:17
【问题描述】:

我想将我的byte[] 转换为String,然后将String 转换为byte[]

所以,

byte[] b = myFunction();
String bstring = b.toString();
/* Here the methode to convert the bstring to byte[], and call it ser */
String deser = new String(ser);

bstring 给了我[B@74e752bb

然后将String 转换为byte[]。我没有按这个顺序使用它,但这是一个例子。

我需要如何在 Java 中做到这一点?

【问题讨论】:

标签: java arrays byte


【解决方案1】:

将byte[]转成String时,应该使用这个,

new String(b, "UTF-8");

而不是,

b.toString();

将字节数组转换为字符串时,应始终指定字符编码并在从字符串转换回字节数组时使用相同的编码。最好是使用 UTF-8 编码,因为它非常强大且紧凑,可以表示超过一百万个字符。如果不指定字符编码,则可能会使用平台的默认编码,从字节数组转换为字符串时可能无法正确表示所有字符。

如果处理得当,你的方法应该写成这样,

    public static void main(String args[]) throws Exception {
        byte[] b = myFunction();
//      String bstring = b.toString(); // don't do this
        String bstring = new String(b, "UTF-8");
        byte[] ser = bstring.getBytes("UTF-8");
        /* Here the methode to convert the bstring to byte[], and call it ser */
        String deser = new String(ser, "UTF-8");
    }

【讨论】:

  • 我只是想有一种保存方法来散列一个字符串以将它保存在一个 yaml 文件中,并且我可以解密它。
  • 如果要保存 byte[] 原样,在一些 yaml 文件中,可以使用 FileOutputStream 将字节写入文件。我不确定“保存哈希方法”是什么意思你能详细说明一下吗?使用 b.toString() 将 byte[] 转换为 String 可能不会给你一个特定的字符串。
  • 对不起,我的意思是:它有效,但我想以安全的方式将 byte[] 保存在 yaml 文件中,现在我只保存旧字符串。
  • 你如何以安全的方式将其保存在 yaml 文件中?看看是否可以使用 base64 对字节数组进行编码,因为这将为您提供字节数组的物理可打印字符串版本。
【解决方案2】:

我不是专家,但您应该尝试“字节”类提供的方法,如有必要,可以尝试一些循环。尝试byte b = Byte.parseByte(String s) 将字符串转换为字节,尝试String s = Byte.toString(byte b) 将字节转换为字符串。希望这会有所帮助:)。

【讨论】:

    【解决方案3】:

    你可以这样做,

    String string = "Your String";
    byte[] bytesFromString = string.getBytes(); // get bytes from a String
    String StringFromByteArray = new String(bytesFromString); // get the String from a byte array 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 2013-12-19
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      相关资源
      最近更新 更多