rafael
Новичок
Необходимо научиться читать бинарный файл, есть небольшая инструкция и сам файл. Больше ничего нет.
В инструкции написано, что следующие два байта имееют формат:
MMDDv
, где:
M = month of year
D = day of month
v = the tens digit
Судя по формату понятна последовательность данных. Но не понятно сколько бит занимает месяц года, день месяца и оставшееся (труднопереводимое) значение.
Я могу догадываться, что месяцу года нужно максимум 4 бита (0-11), дню месяца 5 бит (0-30), ну и (возможно) числу от 0 до 99 - 7 бит. В итоге так и получается = 16 бит (2 байта).
Но такое наивное рассуждение не действует для чтения следующих данных - размер: 1 байт, формат:
SSv
, где:
SS = number of servers
v = hundreds digit
Как ни крути, корректную логику построить не удаётся. Мне кажется, что ключ к разгадке кроется в формате. Не зря некоторые значения дублируются и обознаются заглавными и строчными буквами. В гугле не нашлось.
Может кто знает, как интерпретировать такие форматы?
Суть вопроса: как, исходя из формата, например "MMDDv" (16 бит) или "SSv" (8 бит) можно понять какой бит к чему относится? Вот ещё пример: sCCCCCaAAAAAgGGGGGSS (8 байтов = 64 бита, значений - 7)
На мой взгляд на вопрос может быть два варианта ответа:
1. Такие форматы читаются на основе инструкции, доступной по ссылке [волшебная ссылка]. тебе там станет всё ясно.
2. Инструкция содержит не полную информацию, по предоставленным данным действительно не понятно как читать файл.
В инструкции написано, что следующие два байта имееют формат:
MMDDv
, где:
M = month of year
D = day of month
v = the tens digit
Судя по формату понятна последовательность данных. Но не понятно сколько бит занимает месяц года, день месяца и оставшееся (труднопереводимое) значение.
Я могу догадываться, что месяцу года нужно максимум 4 бита (0-11), дню месяца 5 бит (0-30), ну и (возможно) числу от 0 до 99 - 7 бит. В итоге так и получается = 16 бит (2 байта).
Но такое наивное рассуждение не действует для чтения следующих данных - размер: 1 байт, формат:
SSv
, где:
SS = number of servers
v = hundreds digit
Как ни крути, корректную логику построить не удаётся. Мне кажется, что ключ к разгадке кроется в формате. Не зря некоторые значения дублируются и обознаются заглавными и строчными буквами. В гугле не нашлось.
Может кто знает, как интерпретировать такие форматы?
Суть вопроса: как, исходя из формата, например "MMDDv" (16 бит) или "SSv" (8 бит) можно понять какой бит к чему относится? Вот ещё пример: sCCCCCaAAAAAgGGGGGSS (8 байтов = 64 бита, значений - 7)
На мой взгляд на вопрос может быть два варианта ответа:
1. Такие форматы читаются на основе инструкции, доступной по ссылке [волшебная ссылка]. тебе там станет всё ясно.
2. Инструкция содержит не полную информацию, по предоставленным данным действительно не понятно как читать файл.