如何在BlackBerry中将字节数组转换为String?
我用过
new String(bytearray,encoding type);
我在调用toString()时得到[B@fb5955d6
。有人可以帮助以可读的格式为BlackBerry获取此字符串吗?
答案 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 ..'