Сжать строку в меньшую строку? - PullRequest
1 голос
/ 22 апреля 2011

Это может звучать глупо, но мне все равно интересно ...

Можно ли взять строку, составленную из заданного набора символов, и сжать ее, используя больший набор символов или составивон превращается в число, а затем конвертируется обратно в единицу?

Например, если у вас есть строка, из которой вы знаете, что состоит из [a-z][A-Z][0-9]-_+=, можете ли вы превратить ее в число, поменять ее местами, используясимволы, чтобы сжать его?

Это область, с которой я не знаком, я все еще хочу сохранить ее как строку, просто более короткую.(для отображения / отображения / etc, а не памяти)

Ответы [ 3 ]

2 голосов
/ 22 апреля 2011

Внутри строки хранится массив из 16-битных символов, который для западноевропейских языков является пустой тратой. Вы можете преобразовать его в utf-8, который даст вам 50% сокращение, выполнив

 String myString = .....
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 baos.write(myString.getBytes("UTF-8");
 byte[] data = baos.toByteArray();

и удерживаяв качестве байтового массива.

Конечно, это довольно неудобно, если вы на самом деле хотите использовать их в качестве строк, но если точка является долговременным хранилищем без большого доступа, это сэкономит вам кучу.

Вы должны сделать обратное, чтобы воссоздать строку.

2 голосов
/ 22 апреля 2011

Я бы не стал этого делать, если бы строка не была огромной.Затем вы можете попробовать сжать его с помощью commons-compress или java.util.zip

0 голосов
/ 22 апреля 2011

String является примитивным типом, вы вряд ли сможете восстановить какое-либо пространство путем преобразования, если только вы не используете библиотеку zip в Java, и даже это не приведет к выигрышам в производительности, которые вы, вероятно, ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...