将字节数组转换为String

时间:2013-02-19 04:46:34

标签: java blackberry java-me

如何在BlackBerry中将字节数组转换为String?

我用过

new String(bytearray,encoding type);

我在调用toString()时得到[B@fb5955d6。有人可以帮助以可读的格式为BlackBerry获取此字符串吗?

2 个答案:

答案 0 :(得分:1)

您没有向我们展示 这个字节数据来自哪里,或者 您希望它拥有的值。所以,我不确定我能完全调试你的问题。但是,希望这会有所帮助:

当您在字节数组上调用[B@fb5955d6时,您看到toString()打印出来的原因是default implementation of toString()只会print out a short code for the array data type(例如byte ),然后像你的变量的地址(如果你熟悉C / C ++),这几乎不是你真正想要的,特别是在Java中。

如果您有二进制数据(作为byte[]),Java不知道您是希望该数据是String,还是ButtonField还是{{1 }}。因此,打印输出比对象的地址更有意义。

如果要打印FuzzyWarble数据,则需要使用String创建String对象,但为此,您需要使用默认{{3}或者,或指定您想要的编码。 byte[]"UTF-8"是两种流行的编码。

如果我运行此代码

"ASCII"

我看到了这个

  

字节是[B @ 3b50e2ee
  string是dC~#5 * 8~z

如您所见,我看到的地址与您看到的地址不同(因为我在不同的计算机上运行,​​具有不同的内存布局)。但是,当使用 try { byte[] bytes = new byte[] { 100, 67, 126, 35, 53, 42, 56, 126, 122 }; System.out.println("bytes are " + bytes.toString()); String s = new String(bytes, "UTF-8"); System.out.println("string is " + s); } catch (UnsupportedEncodingException e1) { } 编码转换为String时,我会看到您看到的值。

那么,也许这是正确的价值?

同样,我们不知道二进制数据的来源,或它应该是什么,但我可以告诉你,上面的代码是将字节数组转换为字符串的典型方法。

答案 1 :(得分:0)

试试这个 -

byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};

String value = new String(byteArray);

这将为您提供值'WOW ..'