Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Программирование |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
ЕвгенийВ Member Откуда: Москва Сообщений: 4959 |
Как известно, в .NET есть строки, в том числе одна пустая. Сколько их всего? Как известно, максимальный размер строки = 2 гб, или 1 073 741 823 символов в кодировке utf-16, последняя в свою очередь может закодировать 1 112 064 символов. Символ может быть закодирован 2 или 4 байтами. Если бы все помещались в 2 байта, то все просто, то все просто - геометрическая програссия 65536*(1-65536^1 073 741 823)/(1-65536) Но есть и 4 байта, тогда строка, скажем из 10 байт, может быть представлена так 22222 - 63488(1-63488^5)/(1-63488) 2422 - 63488 * 1048576 * 63488 * 63488 244 - 63488 * 1048576 * 1048576 4222 - 1048576 * 63488 * 63488 * 63488 442 - 1048576 * 1048576 * 63488 Как же быть? |
14 авг 19, 10:36 [21948890] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15400 |
Ничего не понял что считаем. Сколько уникальных строк можно сформировать в .NET ? Если так, то 65536 тут не уместно, т.к. в UTF-16 есть неиспользованные коды В общем случае можно смело ответить дофига, т.к. 655361 073 741 823 = 217 179 869 168 ~= 105 153 960 750 Дальше можно не считать, т.к. это уже мелочи по сравнению с этим числом. |
14 авг 19, 10:48 [21948910] Ответить | Цитировать Сообщить модератору |
KreatorXXI Member Откуда: Москва Сообщений: 1032 |
ЕвгенийВ, тут .Net наверно не причём. В utf-16 для символа строго два байта. Переменная длина в utf-8. А что вообще надо. |
14 авг 19, 10:52 [21948914] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15400 |
Не строго, есть 4-хбайтные, т.к. в юникоде на сегодня более миллиона символов, что никак не входит в 65536 (216). |
||
14 авг 19, 11:54 [21948997] Ответить | Цитировать Сообщить модератору |
KreatorXXI Member Откуда: Москва Сообщений: 1032 |
В Википедии вот так:
Я так понял, хитро кодируются. В принципе может это и не важно. Сейчас utf-8 рулит. |
||||||
14 авг 19, 12:05 [21949021] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
ЕвгенийВ, тема топика - криптография? Какая решается задача - непонятно. Несмотря на действующее ограничение в 2Гб текстовые данные все равно обрабатываются в любом размере. Есть лог-файлы гораздо больше 2Гб и как-то с ними мы умудряемся работать. Поэтому если надо - можно пренебрегать этим ограничением. Но изначально надо поставить задачу. |
14 авг 19, 12:33 [21949092] Ответить | Цитировать Сообщить модератору |
ЕвгенийВ Member Откуда: Москва Сообщений: 4959 |
Не используемые это какие? |
||
14 авг 19, 12:44 [21949112] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15400 |
Вот таблица юникода, полистай, там есть пустые клетки |
||||
14 авг 19, 13:02 [21949142] Ответить | Цитировать Сообщить модератору |
ЕвгенийВ Member Откуда: Москва Сообщений: 4959 |
1. Есть незаполненные значения, скажем выделили какому нибудь алфавиту диапазон из 100 символов, а в нем только 90, но это будут валидные значения. 2. Есть повторяющиеся символы. 3. Есть неправильно сформированные строки.
Нужны все строки всех строк, правильных, повторяющихся и не заполненных, за исключением 3 пункта. |
||||||
14 авг 19, 15:08 [21949341] Ответить | Цитировать Сообщить модератору |
Basil A. Sidorov Member Откуда: Сообщений: 10846 |
Символы (глифы) состоят из одной или нескольких кодовых точек и этот факт не зависит от способа кодирования. |
||
14 авг 19, 17:04 [21949466] Ответить | Цитировать Сообщить модератору |
KreatorXXI Member Откуда: Москва Сообщений: 1032 |
Basil A. Sidorov, Вы пример какой-нибудь приведите. А то непонятно. |
14 авг 19, 17:46 [21949512] Ответить | Цитировать Сообщить модератору |
KreatorXXI Member Откуда: Москва Сообщений: 1032 |
KreatorXXI, снимается вопрос. Есть символы из двух двухбайтовых слов, т.н. суррогатные пары. |
14 авг 19, 17:54 [21949520] Ответить | Цитировать Сообщить модератору |
KreatorXXI Member Откуда: Москва Сообщений: 1032 |
На Википедии (https://ru.wikipedia.org/wiki/UTF-16) есть пример функции по декодированию. В ней зашито определение недопустимых диапазонов. Достаточно всё просто. Можно этим воспользоваться. |
||
14 авг 19, 18:02 [21949525] Ответить | Цитировать Сообщить модератору |
Leonid Kudryavtsev Member Откуда: Сообщений: 9316 |
Вроде в Unicode символы могут быть составные. Например буква отдельно и аксент марки отдельно. Тогда, наверное, их кол-во врят ли ограничено (насколько помню, древне греческие буквы до 4 разных (или больше?) акцент марков в написании могут иметь). Но давно с этим разбирался. И в то время, полноценно Unicode почти никто не поддерживал |
14 авг 19, 18:03 [21949526] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15400 |
Зачем? По пьяне поспорили кто точнее посчитает? |
||
14 авг 19, 20:26 [21949607] Ответить | Цитировать Сообщить модератору |
Basil A. Sidorov Member Откуда: Сообщений: 10846 |
Это если совсем наглядно и не выходя за пределы кириллицы. P.S. Вот реально несложные вещи, изложенные на сайте консорциума во введении к стандартам и в ЧАВО. P.P.S. Что за эпидемия стильно-модно-молодёжных сайтов началась-то ... |
||
14 авг 19, 20:38 [21949619] Ответить | Цитировать Сообщить модератору |
ЕвгенийВ Member Откуда: Москва Сообщений: 4959 |
Нужна формула, которая по данному N (количеству char) даст количество строк. |
||
14 авг 19, 21:34 [21949640] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15400 |
Есть ответ дофига, т.е. больше чем атомов во вселенной. Зачем дальше считать? |
||||
14 авг 19, 21:40 [21949644] Ответить | Цитировать Сообщить модератору |
ЕвгенийВ Member Откуда: Москва Сообщений: 4959 |
Хочу все знать, интересует сама методика подсчета таких сумм. |
||
14 авг 19, 22:00 [21949650] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
В фундаментальных науках обычно говорят не о подсчёте а об оценке. Тоесть. Мы берем предположение что будет текст который на 99% состоит из обычных символов unidoce (двухбайтных) и на 1% из т.н. code-points со средней длиной 2 char (четырехбайтных). Дальше - школа. Втрой класс. Работа с дробями и пропорциями. Считаем по вашим-же формулам в первом посте. Гнаться за супер-точностью порядка копеек в младших разрядах нет смысла т.к этот ответ ни на что не влияет. А для принятия решения в физике например просто берут старшие 10 десятичных разрядов и порядок числа а младшие - тупо игнорируют. По аналогии с типом double. Он работает похожим образом только основание системы не 10 а 2. Такие-же методики грубых оценок и сравнений к примеру использует Брюс Шнайер в своей книге "Практическая Криптография". |
||||
14 авг 19, 22:12 [21949659] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52116 |
Тогда вам в школьную математику, раздел комбинаторика. В простейшем случае это перемноженные количества возможных значений для каждой из позиций. То есть, например, в двузначном числе в первой позиции 10 возможных значений и во второй 10. Поэтому всего двузначных чисел существует 10*10 = 100. Если в первой позиции вместо цифр будут латинские буквы, то количество достигнет 26*10 = 260. И так далее по аналогии. |
||
15 авг 19, 14:55 [21950159] Ответить | Цитировать Сообщить модератору |
Roman Mejtes Member Откуда: г. Пермь Сообщений: 4064 |
Dimitry Sibiryakov, комбинаторика это не школьный курс, не надо передергивать, комбинаторику преподают на 1-2 курсах института, в профильных техникумах |
15 авг 19, 15:24 [21950211] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15400 |
Вроде как 10-11 класс. В техникумы обычно после 9-го идут, поэтому там ускоренно проходят программу 10-11 классов. Институты с мат.уклоном наверно углубленно изучают. |
||
15 авг 19, 15:35 [21950228] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Да комбинации юникодов автор правильно посчитал в 1 посту. Его вопрос касался длинных Unicode-последовтательностей. |
15 авг 19, 15:41 [21950240] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15400 |
Получается если все символы 2 байта, то 634881 073 741 823 комбинаций Если один 4-байтный, то 634881 073 741 821 * 1 112 0641 два 4-байтных - 634881 073 741 819 * 1 112 0642 и т.д. до 634881 * 1 112 064536 870 911 Т.е. каждое последующее произведение получается делением на 634882 и умножением на 1 073 741 823. Или по другому это геометрическая прогрессия. Дальше посчитать по формуле суммы N элементов геометрической прогрессии. |
||
15 авг 19, 16:20 [21950281] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Программирование | ![]() |