Преобразование бит данных в строку Java - PullRequest
0 голосов
/ 15 мая 2018

У меня есть переменная OBJECT_ID, хранящаяся в DB2 как OBJECT_ID VARCHAR() FOR BIT DATA NOT NULL.

Как я могу извлечь значение String, хранящееся в ней?

Я попытался следующий код для преобразованияBinary до String в Java как:

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значение VARCHAR() FOR BIT DATA из DB2 в моей Java-программе?

1 Ответ

0 голосов
/ 15 мая 2018

Поскольку "[B" из toString обозначает тип byte[], должно быть возможно следующее:

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

Тогда существует проблема, что String для текста (Unicode), а не двоичных данных. char - это два байта, закодированные в UTF-16.

Вы можете попытаться использовать строку как:

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

Это зависит от OBJECT_ID.

Обычно двоичные данные могут быть закодированы в виде текста как Base64, используя 64 символа ASCII в качестве «цифр».

String s = Base64.getEncoder().encodeToString(b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...