
Юра
09.05.2018
07:51:24

Dolphin
09.05.2018
07:51:34
нахуй бит?
байт делай

Google

Юра
09.05.2018
07:52:06
нахуй бит?
Проблема в том, что строки кодированы хаффманом, у которого нет незначащих нулей

Dolphin
09.05.2018
07:52:25

Юра
09.05.2018
07:52:28
Но и битовые длины укладываются в байтовую ячейку, не вижу проблемы использовать биты

Dolphin
09.05.2018
07:52:29
причем тут это?
У ТЕБЯ ДЛИНА СТРОКИ - 0

Юра
09.05.2018
07:52:50
Ты говоришь мне «длина строки может быть кодирована байтами»

Dolphin
09.05.2018
07:52:56
в некоторых позициях

Юра
09.05.2018
07:52:59
Так
Падажжи
Нет таких случаев

Dolphin
09.05.2018
07:53:37
03f4 00
03f5 00
03f6 00
03f7 7c
03f8 8d
03f9 7b
03fa 4b
03fb 80
03fc 00
03fd 00

Юра
09.05.2018
07:53:59
С первые три байта (ф4 по ф6) это ключ

Google

Юра
09.05.2018
07:54:06
Далее 0х20 бит идет строка
Выровненная до байта

Dolphin
09.05.2018
07:54:47
а понял
это дата по смещению 1012

Юра
09.05.2018
07:55:25
Да, первые 1012 это массив битовых длин в байтовых ячейках

Dolphin
09.05.2018
07:55:40
хорошо
теперь про длины
про Хаффмана понял
но как ты смещение считаешь?
биты делим на 8?

Юра
09.05.2018
07:56:24
В каком случае?
Типа откуда до куда читать строку?

Dolphin
09.05.2018
07:56:54
да
0000 20
0001 72
0002 69
...
03f1 3f
03f2 44
03f3 18
вот например 0001
длина 72
как ты получаешь смещение в мессиве строк?
0x3f4+20»3 ?

Юра
09.05.2018
07:59:19
Сек, я с мобильника, неудобно

Google

Юра
09.05.2018
07:59:36
К компу подойду
А, я понял твой вопрос. Я делаю ceil(0x20/8)
Так я получаю кол-во полных байт занимаемых строкой
Но это флоат математика, надо на бинарные операции переписать, а то долго выйдет, я думаю

Dolphin
09.05.2018
08:02:39
почему флоат?
0x20 » 3

Юра
09.05.2018
08:03:09
В данном случае все ок
В других нет

Dolphin
09.05.2018
08:03:17
три такта

Th0r
09.05.2018
08:03:18
https://bookspics.com/wp-content/uploads/2016/12/arduino_adventures_escape_from_gemini_station-500x615.jpg

Юра
09.05.2018
08:03:22
0x72 >> 3
Так. И тут ок

Юра
09.05.2018
08:03:43
Минуту

Dolphin
09.05.2018
08:03:51
;)

Юра
09.05.2018
08:04:01
Так

Dolphin
09.05.2018
08:04:27
9»3 = 1

Юра
09.05.2018
08:04:41
А нет
Вру вру

Dolphin
09.05.2018
08:04:45
надо остаток проверять

Юра
09.05.2018
08:04:47
Смотри

Google

Юра
09.05.2018
08:04:52
0x72 длина
Вот

Dolphin
09.05.2018
08:05:52
на ассемблере напиши деление

Юра
09.05.2018
08:06:05
In [13]: 0x20 >> 3
Out[13]: 4
In [14]: ceil(0x20 / 8)
Out[14]: 4

Dolphin
09.05.2018
08:07:02
eor r17, r17
shr r16
ror r17
shr r16
ror r17
shr r16
ror r17
swap r17
shr r16
r16 - частное
r17 - остаток

Th0r
09.05.2018
08:07:44

Admin
ERROR: S client not available

Dolphin
09.05.2018
08:08:09
о наес! )

Юра
09.05.2018
08:08:27
как это работает?

Dolphin
09.05.2018
08:08:30
7»3 = 0
(7+1)»3 =1

Юра
09.05.2018
08:09:04
In [18]: (0x20+0x7) >> 3
Out[18]: 4
In [19]: ceil(0x20 / 8)
Out[19]: 4
In [20]: (0x72+0x7) >> 3
Out[20]: 15
In [21]: ceil(0x72 / 8)
Out[21]: 15
А. Я понял. Мы типа почти до байта дополняем и если будет хотя бы один бит, то мы получим байт и результат будет на 1 выше, прям как делает тот ceil, который нам нужен

Dolphin
09.05.2018
08:10:04
+
Итого - 4 такта

Victor
09.05.2018
08:16:19
О, поздравляю. Новый взял?

Google

Юра
09.05.2018
08:19:38

Andor
09.05.2018
08:21:04
нашёл причину кстати
/* Single characters are shared when using this constructor.
Restrict to ASCII, since the input must be UTF-8. */
if (size == 1 && Py_CHARMASK(*u) < 128) {
unicode = unicode_latin1[Py_CHARMASK(*u)];
if (!unicode) {
unicode = _PyUnicode_New(1);
if (!unicode)
return NULL;
unicode->str[0] = Py_CHARMASK(*u);
unicode_latin1[Py_CHARMASK(*u)] = unicode;
}
Py_INCREF(unicode);
return (PyObject *)unicode;
}

Юра
09.05.2018
08:26:49

video
09.05.2018
08:27:03
Поругайте девайс
Что за пиздобляцкий девайс? Что за рукожопы его собрали? Да мой дырявый калькулятор лучше чем это непонятное что то...... Ну что братуха, нормально ругаю? Не перебарщиваю?

Andor
09.05.2018
08:27:05
PyObject *PyUnicode_FromStringAndSize(const char *u, Py_ssize_t size)
по-сути да, преобразование из строки в юникод
то есть то что выполняется при unicode('a')
отдельно специальным образом обрабатывает 0 и 1 символьные строки

Юра
09.05.2018
08:32:20

Dolphin
09.05.2018
08:35:18
хули ты не пишешь нихуя а? )

Th0r
09.05.2018
08:36:01

Dolphin
09.05.2018
08:36:07
ты понял меня
не выебывайся ;p

Th0r
09.05.2018
08:36:41
ты понял меня
то что нельзя запрограммировать на ассемблере - приходиться паять

Dolphin
09.05.2018
08:37:05
почему не Си? )

Th0r
09.05.2018
08:37:41

Юра
09.05.2018
08:37:58
@Dolphin_Soft, а ты не думаешь, что проще по скорости обращения к ключам будет хранить не ключи+строки а просто строки
т.е. будем иметь массив выровненных трехбайтовых ключей, затем массив выровненных однобайтовых битовых длин строк
Затем будем иметь выровнянную до байта последовательнсоть битовых строк

Dolphin
09.05.2018
08:37:59
Запаяй мне рекурсивный спуск ))

Юра
09.05.2018
08:38:25

Th0r
09.05.2018
08:38:25