Как получить размер в битах Java

Как получить размер строки в 64 бита (не байтах) в порядке обратного порядка байтов)? Я никогда не делал подобных операций на Java. Спасибо за любую помощь :).


person Yoda    schedule 06.07.2012    source источник


Ответы (3)


Внутри Java всегда используется порядок BigEndian, даже если платформа, такая как x86, использует LittleEndian.

В Java 64-битные значения хранятся в типе данных long.

Теперь последний вопрос - что вы хотите измерить. В строке вы можете подсчитать количество символов или количество байтов, которые строка принимает при кодировании с использованием указанной кодировки (например, UTF-8, UTF-16, ISO-8859-1, ...).

Предполагая, что вы хотите подсчитать количество символов в строке и получить число как 64-битное число, вы можете использовать следующий код:

String myString = "abcdefgh";
long charCount = myString.length;

Если вы хотите записать charCount в файл или в сетевое соединение, вы можете использовать DataOutputStream для получения представления BigEndian:

DataOutputStream out = new DataOutputStream(streamToWriteTo);
out.writeLong(charCount);
person Robert    schedule 06.07.2012

Я думаю, вы этого хотите:

String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16BE");
int sizeInBits = byteArray.length * 8;

Источник: Почему byteArray имеет длину 22 вместо 20?

person ametren    schedule 06.07.2012
comment
Правильно, умножьте на 8. Байт равен 8 битам. - person ametren; 09.07.2012

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

Для последнего это просто string.getBytes(charset).length.

Это могло бы помочь, если бы мы знали, что вы на самом деле пытаетесь сделать.

person Louis Wasserman    schedule 06.07.2012
comment
Ну, байты всегда можно преобразовать в биты. - person TheZ; 06.07.2012
comment
OP явно помещает строку в битовый поток. Ему нужно закодировать ее длину (в битах) в 64-битное целое число с прямым порядком байтов (снова доступное как битовый поток), а затем он отправит саму строку как битовый поток (это был его предыдущий вопрос). - person Marko Topolnik; 06.07.2012