将BIT数据转换为字符串Java

时间:2018-05-15 07:12:00

标签: java db2

我有一个变量OBJECT_ID作为OBJECT_ID VARCHAR() FOR BIT DATA NOT NULL存储在DB2中。

如何检索存储在其中的String值?

我尝试使用以下代码将Java中的Binary转换为String

String str = resultset.getObject("OBJECT_ID").toString();
int charCode = Integer.parseInt(str,2);
String str1 = new Character((char)charCode).toString();

但它会引发以下情况:  NumberFormatException: For input string : "[B@475e586c"

确定String不是整数但是如何在我的java程序中从DB2中检索String的{​​{1}}值?

1 个答案:

答案 0 :(得分:2)

由于“toString的[B”表示类型byte[],因此可能存在以下情况:

byte[] b = (byte[]) resultset.getObject("OBJECT_ID");

然后存在String用于(Unicode)文本而不是二进制数据的问题。 char是以UTF-16编码的两个字节。

您可以尝试将String滥用为:

String s = new String(b, StandardCharsets.ISO_8859_1); // Bad idea.

这取决于OBJECT_ID。

通常二进制数据可以编码为Base64文本,使用64个ASCII字符作为“数字”。

String s = Base64.getEncoder().encodeToString(b);