|
|
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Есть внешний носитель информации встроенный в один прибор. Объем памяти 128 ячеек памяти. Нужно чтобы пользователь мог сохранять там свои данные вот таких форматов. 1. Строка символов произвольной длинны (размером не больше доступной памяти) 2. Дата 3. Целое беззнаковое число размером 2 байт 4. Бит или произвольное количество битов Проблема придумать структуру заголовка, который будет описывать формат данных хранящихся в ячейках памяти. Размер структуры должен быть минимален, ведь он будет храниться в тех же 128 байтах памяти. Может есть примеры как это реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 15:37 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
экономить нужно каждый бит или достаточно каждый байт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 15:52 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Стандартно, вроде... Тип переменной (1 байт): 1: Строка 2: Дата 3: Число 4: Массив битов В случае 1 и 4 еще один байт, означающий длину последующих данных (символов или битов/байтов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 15:52 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
miksoftэкономить нужно каждый бит или достаточно каждый байт? Желательно впихнуть как можно больше информации. Проблема в том, что данные в памяти могут сохраняться разных типов. Строки, целые числа, биты. В любом сочетании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:01 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Nutzmiksoftэкономить нужно каждый бит или достаточно каждый байт?Желательно впихнуть как можно больше информации.Все же хотелось бы знать до какой степени ужимать? Ведь чем сильнее ужимать, тем сложнее будет оперировать с такими данными. Например, под дату можно отвести два байта, а можно и полтора, если известно, что актуальный период дат укладывается в 11 лет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:05 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
wadmanСтандартно, вроде... В случае 1 и 4 еще один байт, означающий длину последующих данных (символов или битов/байтов). Использовать байт со строками слишком расточительно. Он ведь может адресовать 256 ячеек, а память максимум 128. А с битами его не хватит, потому как надо адресовать 1024 бита. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:07 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
NutzОн ведь может адресовать 256 ячеек Превышение пределов должно контролироваться ПО, которое и обращается к этим 128-ми байтам. Если строки строго в латинице, то на байт - 2 символа. NutzА с битами его не хватит А кто сказал, что ограничиваться нужно одним идентификатором? 0x04 0xFF (тут 32 байта с битами) 0x94 0xFF (тут еще 32 байта с битами) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:12 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
miksoftНапример, под дату можно отвести два байта, а можно и полтора, если известно, что актуальный период дат укладывается в 11 лет. Дата может отличаться на минус 500 лет, верхний предел допустим 20 лет. Т.е. временной интервал от 1513 года до 2033 года. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:15 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Nutz, И еще - снаружи вообще ничего не хранится, даже информации о структуре заголовка? Или все-таки какая-то метаинформация может храниться где-то еще (например, неявно в коде ПО) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:15 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
NutzmiksoftНапример, под дату можно отвести два байта, а можно и полтора, если известно, что актуальный период дат укладывается в 11 лет.Дата может отличаться на минус 500 лет, верхний предел допустим 20 лет. Т.е. временной интервал от 1513 года до 2033 года.Это 18 бит нужно под дату. Если хранить ее в фиксированном формате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:17 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
В любом случае, поскольку используются типы с переменной длиной (строка и массив), вам придется выделить 2 байта под описание структуры (2 бита - тип данных, 10 бит - длина, 4 бита - резерв), так что под данные у вас останется 126 байт. С другой стороны, можно расширить количество использумых типов, оперировать 7,6,5-битовым алфавитом для строк или массивом типов (чисел или дат) и т.п. Самое главное - единовременно хранится только один набор данных (только дата или только строка или...)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:18 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
miksoft, Метаинформация может храниться. Чтобы было понятней проясню ситуацию. Речь идет о RFID-метках на книги и документы. У нее 128 байт перепрограммируемой памяти. Туда желательно впихнуть максимум информации о документе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:21 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Nutz, тогда проще полный штрих-код туда писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:25 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Или документы более нигде не идентифицируются? Тогда присвоить ему этот самый код. Будет что-то вроде ID документа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:26 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
wadman, UID - в 7 байтов у этой метки уже есть. Он конечно может храниться в базе. Но какой срок жизни этой базы? Она может сгинуть через несколько лет. А исторический документ хранится в архиве десятки и сотни лет. RFID-метка может быть живой 30-40 лет. Поэтому важно впихнуть в нее максимум информации. Даже если база пропадет, чтобы что-то можно было вытащить из метки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:31 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
А. тогда да... А то я сначала неправильно поспринял постановку. Конечно, если ещё есть задача иметь возможность автономно считывать данные о книге/документе - так всё не надо навороченной структуры: ID/ШК + остальное место под простой текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:32 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
NutzРечь идет о RFID-метках на книги и документы. У нее 128 байт перепрограммируемой памяти. Туда желательно впихнуть максимум информации о документе. При этом большинство данных (по размеру) всё-таки окажется строковым. Значит, весь пакет данных будет подвергаться сжатию (пусть и небольшому). Осталось прошерстить алгоритмы сжатия, которые наиболее компактно ужимают данные небольшого размера... Думаю, что представление всех данных в виде строкового литерала с разделителями (тот же CSV) будет более разумным вариантом. Сигнатура сжатым данным не требуется (отнесём её ко внешним метаданным). К внешним же метаданным отнесём и репарсер данных после декомпрессии. Последовательность битов придётся кодировать тем же UUE или Base64, но это вряд ли смертельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:35 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
NutzНо какой срок жизни этой базы? При желании не меньше, чем у документа. NutzА исторический документ хранится в архиве десятки и сотни лет. Вот тут совсем не понятно... Если документ целый, но что такого полезного можно прочитать из метки? А если он уничтожен, то и метка не поможет особо. Хотя если она читается, то из базы можно поднять любую информацию о документе, которая была занесена ранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:36 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
wadmanХотя если она читается, то из базы можно поднять любую информацию о документе, которая была занесена ранее. Вплоть до самого документа, к которому тут-же наклепать новую метку (копию старой метки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:37 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Алгоритм не должен быть слишком сложным. Это в некотором роде послание в будущее. Он должен быть записан на бумаге и в случае необходимости легко восстановлен через десятки лет. Чтобы потомки могли прочитать данные с RFID-метки, если до них не дойдет база данных, или библиотеку сожгут, уничтожат в результате войн и катаклизмов. Останутся только отдельные документы с метками и описание алгоритма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:40 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
NutzЧтобы потомки могли прочитать данные с RFID-метки, если до них не дойдет база данных, или библиотеку сожгут, уничтожат в результате войн и катаклизмов. Ну... Тут только XML поможет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:42 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
wadmanЕсли документ целый, но что такого полезного можно прочитать из метки? А если он уничтожен, то и метка не поможет особо. Хотя если она читается, то из базы можно поднять любую информацию о документе, которая была занесена ранее. Оклеиваются метками не только целые документы, а разрозненные листы связанные между собой, ветхие и т.д. В метку сохраняются специальные инвентарные библиотечные поля: EAS, AFI, ID, ISIL, учет комплектов, количество частей, номер части, дополнительные ID инвентаризации и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:44 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Nutzбиблиотеку сожгут, уничтожат в результате войн и катаклизмов. Останутся только отдельные документы с метками и описание алгоритма. Метки по определению не являются хранилищем данных, а только идентификатором-связкой. Так что не надо на них возлагать несвойственные функции. Ну и вообще - проще стразу оцифровывать документы и хранить ЭБД хоть в миллионах копий. Потомкам будет проще найти инфу на электронных носителях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:53 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Nutz, разве что еще можно задействовать транскрипцию и хранить символы строк только в половине байта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 16:55 |
|
||
|
Впихнуть структуру произвольных данных в 128 байт
|
|||
|---|---|---|---|
|
#18+
Общие рецепты: 1) Часть полей, наличие которых обязательно (например, дата документа, количество страниц и т.п.) для всех документов и формат которых допускает запись фиксированной длины, располагать в начале и не сопровождать мета-информацией. 2) Строковое поле переменной длины расположить в конце и тоже не сопровождать мета-информацией, даже длиной. Лишние байты записывать фиксированным содержимым, например, нулями. 3) Для строк использовать сокращенные алфавиты в 6-7 бит. Можно, кстати, и дробное количество бит. Например, пару символов кодировать 13 битами. 4) Если алфавит использует не все возможные комбинации битов, то можно не хранить длину, а использовать определённую комбинацию битов как терминатор строки. 5) Можно строго документировать тип и порядок максимально возможного набора полей, но хранить не все, а только реально заполненные. Для всех необязательных для заполнения полей хранить маску битов для обозначения факта наличия поля. Потенциально, так можно будет сэкономить на указании типов полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 17:07 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38223745&tid=1341850]: |
0ms |
get settings: |
9ms |
get forum list: |
24ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 437ms |

| 0 / 0 |
