У меня есть данные в двоичном формате (hex: 80 3b c8 87 0a 89
), и мне нужно преобразовать их в String, чтобы сохранить двоичные данные в MS Access db через Jackcess. Я знаю, что я не предполагаю использовать String в Java для двоичных данных, однако Access db является сторонним продуктом, и я не контролирую его вообще.Преобразование байта [] с двоичными данными в String
Поэтому я попытался преобразовать двоичные данные и сохранить их, но, к сожалению, результат был неожиданным.
byte[] byteArray = new byte[] {0x80, 0x3b, 0xc8, 0x87, 0x0a 0x89};
System.out.println(String.format("%02X ",byteArray[0])+String.format("%02X ", byteArray[1]));//gives me the same values
String value = new String(byteArray, "UTF-8");//or any other encoding
System.out.println(value);//completely different values
Я хотел бы знать, что происходит под new String
и если существует способ преобразования двоичных данных в строки и имеют те же шестнадцатеричные значения.
Примечание 1: сначала я прочитал двоичный файл, который не имеет ничего общего с шестнадцатеричным. Я использую hex только для сравнения наборов данных.
Примечание 2 Было предложение использовать Base64 аку MIME, UTF-7 и т.д. По моему разумению, он принимает двоичные данные и кодирует, что в ANSI кодировку, в основном настройки исходных данных. Однако для меня это не решение, потому что я должен написать точные данные, которые хранятся в двоичном массиве.
byte[] byteArray = new byte[]{0x2f, 0x7a, 0x2d, 0x28};
byte[] bytesEncoded = Base64.encodeBase64(byteArray);
System.out.println("encoded value is " + new String(bytesEncoded));//new data
Подсказка: что означает 'String.valueOf (byteArray)' return? (Это ничего не полезно) – immibis
Вы пытались «String value = new String (byteArray,« UTF-8 »);' –
@ mr.icetea: Это действительно не сработает. UTF-8 не является шестнадцатеричным ... –