【问题标题】:Java String to array of bytes wrong conversionJava String 到字节数组的错误转换
【发布时间】:2014-10-26 03:06:36
【问题描述】:

我有一个客户端服务器 Java 代码,客户端正在读取一个字符串“输入”,然后它应该解密它,解密函数需要一个字节数组,所以我需要将字符串转换为字节数组,这使用“getBytes()”函数完成,但似乎这个函数正在修改字符串!如何在不更改其内容的情况下将字符串转换为字节数组。

   String input = inputline.substring(66, inputline.length());
   System.out.println("Read message +"+input+"+");
   byte[] bx = input.getBytes(Charset.forName("UTF-8"));
   System.out.println("Read message +"+bx.toString()+"+");
   System.out.println("Read message +"+bx+"+");

代码sn-p的输出如下:

阅读留言+[B@161cd475+

阅读留言+[B@4e25154f+

阅读留言+[B@4e25154f+

【问题讨论】:

  • 我能否澄清Read message +[B@161cd475+ 是否对字符串“输入”有效?
  • @AlvinBunk 是的,“[B@161cd475”是需要的文本。

标签: java string type-conversion bytearray


【解决方案1】:

尝试编写一个 for 循环来打印结果。我相信 Java 会为您的输出输出一个随机内存值。

(int i = 0; s <= bx.length;i++)
{
 System.out.println("Read message +" + bx[i].toString() + "+");
 System.out.println("Read message +" + bx + "+");
}

不确定我的 for 循环是否正确,但它可能会为您提供一些帮助。我希望这会有所帮助。

【讨论】:

  • 我得到一个编译错误“字节不能被取消引用”
【解决方案2】:

这应该适合你。我需要从字节数组中创建一个 String 对象...

String inputline = "[B@161cd475";
String input = inputline.substring(0, inputline.length());
System.out.println("Read message +"+input+"+");
byte[] bx = input.getBytes();

// Convert to String object
String tmp = new String(bx);
// Print statements.
System.out.println("Read message +" + tmp + "+");

【讨论】:

  • 谢谢,您的代码输出正确,但我需要字节数组“bx”包含与当前包含“[B@4e25154f”的字符串“[B@161cd475”相同的值这不是我想要的。
  • 也许你的意思是你应该存储为一个 char[] 数组。由于存储为 byte[] 将存储为数字...(具体为十进制)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 2011-07-02
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
相关资源
最近更新 更多