Java: преобразование строки в байтовый массив, затем в длинное значение и наоборот - PullRequest
1 голос
/ 13 декабря 2010

По сути, я ищу .NET BitConverter .

Мне нужно получить байты из строки, затем проанализировать их в длинное значение и сохранить их. После этого прочитайте длинное значение, проанализируйте байтовый массив и создайте исходную строку. Как я могу добиться этого в Java?

Редактировать: Кто-то уже задавал подобный вопрос. Я больше похож на образцы, чем на Javadoc ...

1 Ответ

2 голосов
/ 13 декабря 2010

String имеет метод getBytes.Вы можете использовать это для получения байтового массива.

Чтобы сохранить байтовый массив как long, я предлагаю вам обернуть байтовый массив в ByteBuffer и использовать метод asLongBuffer.

Чтобы получить String обратно из массива байтов, вы можете использовать конструктор String(byte[] bytes).

String input = "hello long world";

byte[] bytes = input.getBytes();
LongBuffer tmpBuf = ByteBuffer.wrap(bytes).asLongBuffer();

long[] lArr = new long[tmpBuf.remaining()];
for (int i = 0; i < lArr.length; i++)
    lArr[i] = tmpBuf.get();

System.out.println(input);
System.out.println(Arrays.toString(lArr));
// store longs...

// ...load longs
long[] longs = { 7522537965568945263L, 7955362964116237412L };
byte[] inputBytes = new byte[longs.length * 8];
ByteBuffer bbuf = ByteBuffer.wrap(inputBytes);
for (long l : longs)
    bbuf.putLong(l);
System.out.println(new String(inputBytes));

Посмотреть его в действии на ideone.com

Обратите внимание, что вы, вероятно, хотите сохранить дополнительное целое число, указывающее, сколько байтов на самом деле хранится в длинном массиве, поскольку число байтов может не быть кратным 8.

...