Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Впихнуть структуру произвольных данных в 128 байт / 25 сообщений из 52, страница 1 из 3
12.04.2013, 15:37
    #38223653
Nutz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Есть внешний носитель информации встроенный в один прибор.
Объем памяти 128 ячеек памяти. Нужно чтобы пользователь мог сохранять там свои данные вот таких форматов.

1. Строка символов произвольной длинны (размером не больше доступной памяти)
2. Дата
3. Целое беззнаковое число размером 2 байт
4. Бит или произвольное количество битов

Проблема придумать структуру заголовка, который будет описывать формат данных хранящихся в ячейках памяти. Размер структуры должен быть минимален, ведь он будет храниться в тех же 128 байтах памяти. Может есть примеры как это реализовать?
...
Рейтинг: 0 / 0
12.04.2013, 15:52
    #38223690
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
экономить нужно каждый бит или достаточно каждый байт?
...
Рейтинг: 0 / 0
12.04.2013, 15:52
    #38223692
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Стандартно, вроде...

Тип переменной (1 байт):
1: Строка
2: Дата
3: Число
4: Массив битов

В случае 1 и 4 еще один байт, означающий длину последующих данных (символов или битов/байтов).
...
Рейтинг: 0 / 0
12.04.2013, 16:01
    #38223710
Nutz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
miksoftэкономить нужно каждый бит или достаточно каждый байт?

Желательно впихнуть как можно больше информации. Проблема в том, что данные в памяти могут сохраняться разных типов. Строки, целые числа, биты. В любом сочетании.
...
Рейтинг: 0 / 0
12.04.2013, 16:05
    #38223715
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Nutzmiksoftэкономить нужно каждый бит или достаточно каждый байт?Желательно впихнуть как можно больше информации.Все же хотелось бы знать до какой степени ужимать? Ведь чем сильнее ужимать, тем сложнее будет оперировать с такими данными.
Например, под дату можно отвести два байта, а можно и полтора, если известно, что актуальный период дат укладывается в 11 лет.
...
Рейтинг: 0 / 0
12.04.2013, 16:07
    #38223718
Nutz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
wadmanСтандартно, вроде...
В случае 1 и 4 еще один байт, означающий длину последующих данных (символов или битов/байтов).

Использовать байт со строками слишком расточительно. Он ведь может адресовать 256 ячеек, а память максимум 128. А с битами его не хватит, потому как надо адресовать 1024 бита.
...
Рейтинг: 0 / 0
12.04.2013, 16:12
    #38223728
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
NutzОн ведь может адресовать 256 ячеек
Превышение пределов должно контролироваться ПО, которое и обращается к этим 128-ми байтам.
Если строки строго в латинице, то на байт - 2 символа.

NutzА с битами его не хватит
А кто сказал, что ограничиваться нужно одним идентификатором?
0x04 0xFF (тут 32 байта с битами)
0x94 0xFF (тут еще 32 байта с битами)
...
Рейтинг: 0 / 0
12.04.2013, 16:15
    #38223734
Nutz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
miksoftНапример, под дату можно отвести два байта, а можно и полтора, если известно, что актуальный период дат укладывается в 11 лет.

Дата может отличаться на минус 500 лет, верхний предел допустим 20 лет.
Т.е. временной интервал от 1513 года до 2033 года.
...
Рейтинг: 0 / 0
12.04.2013, 16:15
    #38223737
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Nutz,

И еще - снаружи вообще ничего не хранится, даже информации о структуре заголовка? Или все-таки какая-то метаинформация может храниться где-то еще (например, неявно в коде ПО) ?
...
Рейтинг: 0 / 0
12.04.2013, 16:17
    #38223743
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
NutzmiksoftНапример, под дату можно отвести два байта, а можно и полтора, если известно, что актуальный период дат укладывается в 11 лет.Дата может отличаться на минус 500 лет, верхний предел допустим 20 лет.
Т.е. временной интервал от 1513 года до 2033 года.Это 18 бит нужно под дату. Если хранить ее в фиксированном формате.
...
Рейтинг: 0 / 0
12.04.2013, 16:18
    #38223745
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
В любом случае, поскольку используются типы с переменной длиной (строка и массив), вам придется выделить 2 байта под описание структуры (2 бита - тип данных, 10 бит - длина, 4 бита - резерв), так что под данные у вас останется 126 байт. С другой стороны, можно расширить количество использумых типов, оперировать 7,6,5-битовым алфавитом для строк или массивом типов (чисел или дат) и т.п.
Самое главное - единовременно хранится только один набор данных (только дата или только строка или...)?
...
Рейтинг: 0 / 0
12.04.2013, 16:21
    #38223750
Nutz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
miksoft,

Метаинформация может храниться. Чтобы было понятней проясню ситуацию. Речь идет о RFID-метках на книги и документы. У нее 128 байт перепрограммируемой памяти. Туда желательно впихнуть максимум информации о документе.
...
Рейтинг: 0 / 0
12.04.2013, 16:25
    #38223757
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Nutz, тогда проще полный штрих-код туда писать.
...
Рейтинг: 0 / 0
12.04.2013, 16:26
    #38223761
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Или документы более нигде не идентифицируются?

Тогда присвоить ему этот самый код. Будет что-то вроде ID документа.
...
Рейтинг: 0 / 0
12.04.2013, 16:31
    #38223766
Nutz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
wadman,

UID - в 7 байтов у этой метки уже есть. Он конечно может храниться в базе. Но какой срок жизни этой базы? Она может сгинуть через несколько лет. А исторический документ хранится в архиве десятки и сотни лет. RFID-метка может быть живой 30-40 лет. Поэтому важно впихнуть в нее максимум информации. Даже если база пропадет, чтобы что-то можно было вытащить из метки.
...
Рейтинг: 0 / 0
12.04.2013, 16:32
    #38223767
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
А. тогда да... А то я сначала неправильно поспринял постановку.

Конечно, если ещё есть задача иметь возможность автономно считывать данные о книге/документе - так всё не надо навороченной структуры: ID/ШК + остальное место под простой текст.
...
Рейтинг: 0 / 0
12.04.2013, 16:35
    #38223773
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
NutzРечь идет о RFID-метках на книги и документы. У нее 128 байт перепрограммируемой памяти. Туда желательно впихнуть максимум информации о документе.
При этом большинство данных (по размеру) всё-таки окажется строковым. Значит, весь пакет данных будет подвергаться сжатию (пусть и небольшому). Осталось прошерстить алгоритмы сжатия, которые наиболее компактно ужимают данные небольшого размера... Думаю, что представление всех данных в виде строкового литерала с разделителями (тот же CSV) будет более разумным вариантом. Сигнатура сжатым данным не требуется (отнесём её ко внешним метаданным). К внешним же метаданным отнесём и репарсер данных после декомпрессии. Последовательность битов придётся кодировать тем же UUE или Base64, но это вряд ли смертельно.
...
Рейтинг: 0 / 0
12.04.2013, 16:36
    #38223775
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
NutzНо какой срок жизни этой базы?
При желании не меньше, чем у документа.
NutzА исторический документ хранится в архиве десятки и сотни лет.
Вот тут совсем не понятно... Если документ целый, но что такого полезного можно прочитать из метки? А если он уничтожен, то и метка не поможет особо. Хотя если она читается, то из базы можно поднять любую информацию о документе, которая была занесена ранее.
...
Рейтинг: 0 / 0
12.04.2013, 16:37
    #38223779
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
wadmanХотя если она читается, то из базы можно поднять любую информацию о документе, которая была занесена ранее.
Вплоть до самого документа, к которому тут-же наклепать новую метку (копию старой метки).
...
Рейтинг: 0 / 0
12.04.2013, 16:40
    #38223782
Nutz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Алгоритм не должен быть слишком сложным. Это в некотором роде послание в будущее.
Он должен быть записан на бумаге и в случае необходимости легко восстановлен через десятки лет. Чтобы потомки могли прочитать данные с RFID-метки, если до них не дойдет база данных, или библиотеку сожгут, уничтожат в результате войн и катаклизмов. Останутся только отдельные документы с метками и описание алгоритма.
...
Рейтинг: 0 / 0
12.04.2013, 16:42
    #38223788
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
NutzЧтобы потомки могли прочитать данные с RFID-метки, если до них не дойдет база данных, или библиотеку сожгут, уничтожат в результате войн и катаклизмов.
Ну... Тут только XML поможет...
...
Рейтинг: 0 / 0
12.04.2013, 16:44
    #38223794
Nutz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
wadmanЕсли документ целый, но что такого полезного можно прочитать из метки? А если он уничтожен, то и метка не поможет особо. Хотя если она читается, то из базы можно поднять любую информацию о документе, которая была занесена ранее.

Оклеиваются метками не только целые документы, а разрозненные листы связанные между собой, ветхие и т.д. В метку сохраняются специальные инвентарные библиотечные поля: EAS, AFI, ID, ISIL, учет комплектов, количество частей, номер части, дополнительные ID инвентаризации и т.д.
...
Рейтинг: 0 / 0
12.04.2013, 16:53
    #38223812
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Nutzбиблиотеку сожгут, уничтожат в результате войн и катаклизмов. Останутся только отдельные документы с метками и описание алгоритма.
Метки по определению не являются хранилищем данных, а только идентификатором-связкой. Так что не надо на них возлагать несвойственные функции.

Ну и вообще - проще стразу оцифровывать документы и хранить ЭБД хоть в миллионах копий. Потомкам будет проще найти инфу на электронных носителях...
...
Рейтинг: 0 / 0
12.04.2013, 16:55
    #38223816
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Nutz, разве что еще можно задействовать транскрипцию и хранить символы строк только в половине байта.
...
Рейтинг: 0 / 0
12.04.2013, 17:07
    #38223849
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Впихнуть структуру произвольных данных в 128 байт
Общие рецепты:
1) Часть полей, наличие которых обязательно (например, дата документа, количество страниц и т.п.) для всех документов и формат которых допускает запись фиксированной длины, располагать в начале и не сопровождать мета-информацией.
2) Строковое поле переменной длины расположить в конце и тоже не сопровождать мета-информацией, даже длиной. Лишние байты записывать фиксированным содержимым, например, нулями.
3) Для строк использовать сокращенные алфавиты в 6-7 бит. Можно, кстати, и дробное количество бит. Например, пару символов кодировать 13 битами.
4) Если алфавит использует не все возможные комбинации битов, то можно не хранить длину, а использовать определённую комбинацию битов как терминатор строки.
5) Можно строго документировать тип и порядок максимально возможного набора полей, но хранить не все, а только реально заполненные. Для всех необязательных для заполнения полей хранить маску битов для обозначения факта наличия поля. Потенциально, так можно будет сэкономить на указании типов полей.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Впихнуть структуру произвольных данных в 128 байт / 25 сообщений из 52, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]