0

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

我用过

new String(bytearray,encoding type);

[B@fb5955d6在调用 toString() 时遇到了问题。任何人都可以帮助以 BlackBerry 的可读格式获取此字符串吗?

4

2 回答 2

1

你没有告诉我们这个字节数据来自哪里,或者你期望它有什么价值。所以,我不确定我可以完全调试你的问题。但是,希望这会有所帮助:

当您简单地调用字节数组时,您看到[B@fb5955d6打印出来的原因是toString() 的默认实现只会打印出数组数据类型的短代码(例如),然后是地址之类的东西(如果你熟悉 C/C++) 的变量,这几乎不是你真正想要的,尤其是在 Java 中。toString()byte

当您有二进制数据(作为 a byte[])时,Java 不知道您是否希望该数据是 a String、 aButtonField或 a FuzzyWarble。所以,打印出来没有什么比对象的地址更有意义的了。

如果你想打印String数据,你需要创建一个String带有 的对象byte[],但要做到这一点,你需要使用默认的字符编码,或者指定你想要的编码。 "UTF-8"并且"ASCII"是两种流行的编码。

如果我运行此代码

  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) {
  }

我看到这个

字节为 [B@3b50e2ee
字符串为 dC~#5*8~z

如您所见,我看到的地址与您看到的地址不同(因为我在另一台机器上运行,具有不同的内存布局)。但是,当转换为String带有"UTF-8"编码的 a 时,我会看到您看到的值。

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

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

于 2013-02-19T22:06:59.810 回答
0

尝试这个 -

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

String value = new String(byteArray);

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

于 2013-02-19T05:57:27.053 回答