СПОСОБЫ И УСТРОЙСТВА ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ДВОИЧНЫХ ДАННЫХ
METHODS AND APPARATUS FOR ENCODING AND DECODING BINARY DATA

Область техники, к которой относится изобретение
Настоящая заявка относится к области техники сетевой связи, в частности, к способу и устройству для кодирования двоичных данных и к способу и устройству для декодирования двоичных данных.
Уровень техники
В компьютерах, множество ресурсов сохраняются в форме двоичных данных, таких как изображения, аудио/видеопотоки и исполняемые программы. Файлы, содержащие эти ресурсы, типично представляют собой двоичные файлы. Тем не менее, в некоторых сетевых протоколах или сетевых приложениях, единственные данные, которые могут передаваться корректно, представляют собой универсальные символы. Когда двоичные данные передаются на основе этих сетевых протоколов или сетевых приложений, они сначала должны кодироваться в символьные данные на передающем конце. После того, как они передаются в приемный конец, символьные данные декодируются в двоичные данные.
В современных технологиях, Base64 представляет собой наиболее популярную технологию кодирования и декодирования двоичных данных. Base64 использует 64 символа для того, чтобы кодировать двоичные данные. Для N байтов двоичных данных, каждые шесть непрерывных битов в соответствующих 8*N битов сегрегируются в качестве одной части. Значение каждой части находится в диапазоне 0 ~ 63. Это значение соответствует символу по стандарту ASCII (американского стандартного кода для обмена информацией). ASCII-символы, которым соответствуют все части, сращиваются, чтобы получать Base64-код двоичных данных. Соответствующий процесс декодирования является обратным относительно вышеприведенного процесса кодирования и не описывается здесь подробнее.
Безусловно, для 3 байтов двоичных данных, длина Base64-кодированных данных составляет 4 байта. После того, как двоичный файл преобразуется в Base64-кодированный файл, длина файла увеличивается приблизительно на 33%. Другими словами, двоичный файл должен занимать приблизительно на одну треть больший объем трафика в передаче после Base64-кодирования. В мобильных Интернет-приложениях, для всех услуг жизненно важно уменьшать трафик взаимодействия между серверной стороной и карманным устройством пользователя. После Base64-кодирования, символьные файлы являются относительно большими, затрудняя удовлетворение требований некоторых строгих сценариев применения.
Сущность изобретения
В свете этого, настоящая заявка предоставляет способ кодирования двоичных данных, содержащий:
- получение двоичных данных, имеющих длину k байтов, при этом k является натуральным числом; и
- преобразование k байтов двоичных данных в (k+t) байтов 7-битовых кодированных данных с использованием предварительно определенного алгоритма кодирования, при этом t является минимальным целым числом, которое превышает или равно k, деленному на 7.
Настоящая заявка предоставляет способ декодирования двоичных данных, содержащий:
- получение подлежащих декодированию 7-битовых кодированных данных, имеющих длину в p байтов, при этом p является натуральным числом, большим 1; и
- преобразование p байтов 7-битовых кодированных данных в (p-t) байтов двоичных данных с использованием предварительно определенного алгоритма декодирования, при этом t является минимальным целым числом, которое превышает или равно p/8.
Настоящая заявка дополнительно предоставляет устройство для кодирования двоичных данных, содержащее:
- блок получения двоичных данных, для получения двоичных данных, имеющих длину k байтов, при этом k является натуральным числом; и
- блок 7-битового кодирования, для преобразования k байтов двоичных данных в (k+t) байтов 7-битовых кодированных данных с использованием предварительно определенного алгоритма кодирования, где t является минимальным целым числом, которое превышает или равно k, деленному на 7.
Настоящая заявка предоставляет устройство для декодирования двоичных данных, содержащее:
- блок получения подлежащих декодированию данных, для получения подлежащих декодированию 7-битовых кодированных данных, имеющих длину в p байтов, при этом p является натуральным числом, большим 1; и
- блок 7-битового декодирования, для преобразования p байтов 7-битовых кодированных данных в (p-t) байтов двоичных данных с использованием предварительно определенного алгоритма декодирования, при этом t является минимальным целым числом, которое превышает или равно p, деленному на 8.
Из вышеприведенного технического решения, можно видеть, что в вариантах осуществления настоящей заявки, во время кодирования, предварительно определенный алгоритм кодирования используется для того, чтобы осуществлять 7-битовое кодирование двоичных данных, и во время декодирования, предварительно определенный алгоритм декодирования используется для того, чтобы восстанавливать 7-битовые кодированные данные в двоичные данные. Поскольку 7 байтов двоичных данных могут преобразовываться в 8 байтов 7-битовых кодированных данных, после того, как двоичные данные преобразуются в 7-битовые кодированные данные, длина увеличивается приблизительно на 14,3%. Следовательно, кодированный файл, полученный после приспособления технического решения настоящей заявки, короче Base64-кодированного файла, требует меньшего объема трафика данных во время передачи по сети и является подходящим для сценария применения, имеющего строгие требования.
Краткое описание чертежей
Фиг. 1 является блок-схемой последовательности операций способа кодирования двоичных данных в варианте осуществления настоящей заявки.
Фиг. 2 является блок-схемой последовательности операций способа декодирования двоичных данных в варианте осуществления настоящей заявки.
Фиг. 3 является принципиальной схемой примера предварительно определенного алгоритма кодирования в варианте осуществления настоящей заявки.
Фиг. 4 является принципиальной схемой примера альтернативного предварительно определенного алгоритма кодирования в варианте осуществления настоящей заявки.
Фиг. 5 является аппаратной структурной схемой оборудования, выполняющего вариант осуществления настоящей заявки.
Фиг. 6 является логической структурной схемой устройства для кодирования двоичных данных в варианте осуществления настоящей заявки.
Фиг. 7 является логической структурной схемой устройства для декодирования двоичных данных в варианте осуществления настоящей заявки.
Подробное описание изобретения
В большинстве способов кодирования, символы, которым соответствуют десятичные значения 0 ~ 127, могут поддерживаться посредством различных сетевых протоколов или сетевых приложений для сетевой передачи, таких как ASCII-кодирование, UTF-7 (формат трансформации Unicode 7, 7-битовый формат трансформации Unicode) и 7-битовое кодирование равной ширины. Другими словами, после того, как двоичные файлы преобразуются в 7-битовые кодированные файлы посредством вышеприведенных способов кодирования, они могут передаваться в различных приложениях согласно различным протоколам.
7-битовое кодирование представляет собой способ кодирования, который использует наименьшие 7 битов 1 байта для того, чтобы переносить данные. 7-битовое кодирование может преобразовывать 7 байтов двоичных данных в 8 байтов кодированных данных. По сравнению с Base64-кодированием, которое преобразует 3 байта двоичных данных в 4 байта, оно имеет более высокую эффективность преобразования; кодированные файлы после преобразования меньше, что экономит трафик передачи.
Следовательно, варианты осуществления настоящей заявки предоставляют новый способ кодирования двоичных данных и соответствующий способ декодирования двоичных данных. Они предназначены для того, чтобы преобразовывать двоичные данные в 7-битовые кодированные данные и восстанавливать 7-битовые кодированные данные в двоичные данные, соответственно, чтобы уменьшать длину кодированных данных и экономить трафик, расходуемый посредством кодированных данных во время сетевой передачи, за счет этого разрешая проблемы в современных технологиях.
Варианты осуществления настоящей заявки могут применяться к любому оборудованию с вычислительными возможностями и возможностями хранения. Например, оборудование может представлять собой мобильный телефон, планшетный компьютер, PC (персональный компьютер), ноутбук, сервер, виртуальную машину либо любое другое физическое оборудование или логическое оборудование. Альтернативно, функции в вариантах осуществления настоящей заявки могут достигаться совместно посредством двух или более элементов физического или логического оборудования, допускающего различные выполняемые задачи, при этом способ кодирования и способ декодирования могут выполняться на другом оборудовании, соответственно, или на идентичном оборудовании.
В вариантах осуществления настоящей заявки, последовательность операций способа кодирования двоичных данных показана на фиг. 1.
Этап 110, получение двоичных данных.
Подлежащие преобразованию двоичные данные могут представлять собой двоичный файл или сегмент двоичных данных в качестве части файла. Ограничения на это не задаются. Двоичные данные могут считываться из местоположения хранения конкретной сети, или подлежащие преобразованию двоичные данные могут получаться из указанного кэша. Аналогично, варианты осуществления настоящей заявки не представляют ограничений на это.
Пусть длина полученных двоичных данных составляет k (k является натуральным числом) байтов.
Этап 120, преобразование k байтов двоичных данных в (k+t) байтов 7-битовых кодированных данных с использованием предварительно определенного алгоритма кодирования, где t является минимальным целым числом, большим или равным k/7.
Один байт двоичных данных имеет 8 рабочих битов, в то время как один байт 7-битовых кодированных данных имеет 7 рабочих битов. Следовательно, когда двоичные данные преобразуются в 7-битовые кодированные данные, 1-7 байты двоичных данных могут выражаться с помощью 2-8 байтов 7-битовых кодированных данных, соответственно, и длина, увеличенная после кодирования, составляет 1 байт; 8-14 байты двоичных данных могут выражаться с помощью 10-16 байтов 7-битовых кодированных данных, соответственно, и длина, увеличенная после кодирования, составляет 2 байта. Аналогичным образом, k байтов двоичных данных могут выражаться с помощью (k+t) байтов 7-битовых кодированных данных, где t является минимальным целым числом, большим или равным k/7. Другими словами, когда k байтов двоичных данных преобразуются в 7-битовые кодированные данные, увеличенная длина составляет t байтов.
Любой алгоритм, который может выполнять преобразование "один-к-одному" k байтов двоичных данных в (k+t) байтов 7-битовых кодированных данных, может использоваться в качестве предварительно определенного алгоритма кодирования. Варианты осуществления настоящей заявки не представляют ограничений на это.
В вариантах осуществления настоящей заявки, последовательность операций способа декодирования двоичных данных является такой, как показано на фиг. 2.
Этап 210, получение подлежащие декодированию 7-битовых кодированных данных.
Аналогично, подлежащие декодированию 7-битовые кодированные данные могут представлять собой кодированный файл или сегмент 7-битовых кодированных данных в качестве части файла. Ограничения на это не задаются. 7-битовые кодированные данные могут считываться из местоположения хранения конкретной сети, или подлежащие декодированию 7-битовые кодированные данные могут получаться из указанного кэша. Аналогично, варианты осуществления настоящей заявки не представляют ограничений на это.
Пусть длина подлежащих декодированию 7-битовых кодированных данных составляет p (p является натуральным числом, большим 1) байтов.
Этап 220, преобразование p байтов 7-битовых кодированных данных в (p-t) байтов двоичных данных с использованием предварительно определенного алгоритма декодирования, где t является минимальным целым числом, большим или равным p/8.
Как описано выше, 2-8 байты 7-битовых кодированных данных могут выражать 1-7 байты двоичных данных, соответственно, и длина, уменьшенная после декодирования, составляет 1 байт; 10-16 байты 7-битовых кодированных данных могут выражать 8-14 байты двоичных данных, соответственно, и длина, уменьшенная после декодирования, составляет 2 байта. Аналогичным образом, p байтов 7-битовых кодированных данных могут выражать (p-t) байтов двоичных данных, где t является минимальным целым числом, большим или равным p/8. Другими словами, когда p байтов 7-битовых кодированных данных преобразуются в двоичные данные, уменьшенная длина составляет t байтов.
Алгоритм, который является обратным относительно предварительно определенного алгоритма кодирования, используемого, когда двоичные данные преобразуются в 7-битовые кодированные данные, и который может восстанавливать p байтов 7-битовых кодированных данных в (p-t) байтов предварительного кодированных двоичных данных, может использоваться в качестве предварительно определенного алгоритма декодирования в вариантах осуществления настоящей заявки.
В одном режиме реализации, кодирование может осуществляться на основе следующего подхода: 1 байт двоичных данных состоит из 8 битов. Поскольку 7-битовое кодирование может использовать только наименьшие 7 битов в 1 байте, 1 байт двоичных данных должен выражаться с помощью 1 байта 7-битового кодирования и 1 бита в 1 дополнительном байте. 1 байт 8-битовых двоичных данных может разбиваться на 2 части. Конкретный предварительно определенный бит (он может представлять собой любой бит из "бит 0 - бит 7") используется в качестве 1 бита, выражаемого с помощью дополнительного байта, и оставшиеся 7 битов, отличные от предварительно определенного бита, выражаются с помощью 1 байта 7-битового кодирования. Другие 6 битов в дополнительном байте могут использоваться для того, чтобы переносить предварительно определенные биты 6 других байтов двоичных данных. Таким образом, каждый раз, когда 7 байтов двоичных данных преобразуются в 7-битовое кодирование, 1 байт должен добавляться, и когда меньше 7 байтов двоичных данных преобразуются в 7-битовое кодирование, 1 байт также должен добавляться. Следовательно, когда k байтов двоичных данных преобразуются в 7-битовое кодирование, t байтов должны добавляться.
В одном примере, предварительно определенный алгоритм кодирования в этом режиме реализации может работать следующим образом: извлечение предварительно определенного бита каждого байта в k байтах двоичных данных, комбинирование предварительно определенных битов в t байтов 7-битовых кодированных комбинированных битовых данных согласно заданному порядку битов, использование оставшихся 7 битов каждого байта из k байтов двоичных данных в качестве k байтов 7-битовых кодированных оставшихся битовых данных и размещение k байтов 7-битовых кодированных оставшихся битовых данных и t байтов 7-битовых кодированных комбинированных битовых данных согласно заданному порядку байтов, за счет этого получая (k+t) байтов 7-битовых кодированных данных.
Соответственно, во время декодирования, предварительно определенный алгоритм декодирования в этом режиме реализации может работать следующим образом: поскольку p равно (k+t), p байтов 7-битовых кодированных данных содержат t байтов 7-битовых кодированных комбинированных битовых данных и k байтов 7-битовых кодированных оставшихся битовых данных, размещаемых согласно заданному порядку байтов. После того, как t байтов комбинированных битовых данных и k байтов оставшихся битовых данных идентифицируются согласно заданному порядку байтов, k битов извлекаются из t байтов комбинированных битовых данных согласно заданному порядку битов, и каждый из извлеченных битов вставляется в предварительно определенный бит k байтов оставшихся битовых данных, соответствующих заданному порядку битов для бита, за счет чего получая k байтов двоичных данных.
Заданный порядок битов и заданный порядок байтов могут конфигурироваться свободно при условии, что, предварительно определенный алгоритм кодирования и предварительно определенный алгоритм декодирования используют идентичный заданный порядок битов и заданный порядок байтов. Например, заданный порядок битов может представлять собой "бит 0 - бит (s-1)" либо "бит (s-1) - бит 0" байта комбинированных битовых данных, согласно s непрерывных (s является натуральным числом, не большим 7) байтов оставшихся битовых данных, соответственно. В качестве другого примера, заданный порядок байтов может представлять собой k байтов оставшихся битовых данных перед t байтов комбинированных битовых данных либо t байтов комбинированных битовых данных перед k байтов оставшихся битовых данных, и k байтов оставшихся битовых данных размещаются согласно соответствующим двоичным данным.
Ниже предоставляются два конкретных примера вышеприведенного режима реализации:
Пример 1: Следует обратиться к фиг. 3. В предварительно определенном алгоритме кодирования, старший бит может использоваться в качестве предварительно определенного бита, и старшие биты (седьмые биты) k байтов двоичных данных формируют t байтов комбинированных битовых данных в заданном порядке битов "бит 6 - бит 0" первого байта комбинированных битовых данных, "бит 6 - бит 0" второго байта комбинированных битовых данных.... "Бит 0 - бит 6" в каждом из k байтов двоичных данных используются в качестве k байтов оставшихся битовых данных. t байтов комбинированных битовых данных размещаются перед k байтами оставшихся битовых данных, чтобы получать (k+t) байтов 7-битовых кодированных данных k байтов двоичных данных.
В предварительно определенном алгоритме декодирования первого примера, первые t байтов из p (p=k+t) байтов 7-битовых кодированных данных используются в качестве комбинированных битовых данных, и последние k байтов используются в качестве оставшихся битовых данных. k предварительно определенных битов извлекаются из t байтов комбинированных битовых данных согласно заданному порядку битов "бит 6 - бит 0" первого байта комбинированных битовых данных, "бит 6 - бит 0" второго байта комбинированных битовых данных.... Предварительно определенные биты k, извлеченные по порядку, вставляются в старшие биты k оставшихся битовых данных по очереди, чтобы получать k байтов двоичных данных.
Пример 2: Следует обратиться к фиг. 4. В другом предварительно определенном алгоритме кодирования, четвертый бит используется в качестве предварительно определенного бита, и 7 непрерывных байтов двоичных данных обрабатываются в качестве группы. Если остается меньше 7 байтов данных, то оставшиеся данные также обрабатываются в качестве группы, k байтов двоичных данных должны формировать t групп. С использованием группы в качестве единицы, предварительно определенный бит каждого байта в группе двоичных данных извлекается, 1 байт комбинированных битовых данных формируется согласно заданному порядку битов от бита 0 до бита 6, и "бит 5 - бит 7" каждого байта двоичных данных в группе сдвигаются вправо на один бит, чтобы получать 7-битовые кодированные оставшиеся битовые данные. Комбинированные битовые данные каждой группы размещаются перед оставшимися битовыми данными группы, и t групп размещаются с использованием группы в качестве единицы, чтобы получать (k+t) байтов 7-битовых кодированных данных.
В предварительно определенном алгоритме декодирования второго примера, 8 непрерывных байтов 7-битовых кодированных данных обрабатываются в качестве группы. Если остается меньше 8 байтов, то оставшиеся данные также обрабатываются в качестве группы, в таком случае p (p=k+t) байтов двоичных данных должны формировать t групп. С использованием группы в качестве единицы, при условии, что конкретная группа имеет всего (s+1) (s является натуральным числом, не большим 7) байтов, в таком случае первый байт в группе представляет собой комбинированные битовые данные, и "второй байт - (s+1)-й байт" представляет собой s байтов оставшихся битовых данных; "бит 0 - бит s" комбинированных битовых данных в группе вставляются в четвертый бит "второго байта - (s+1)-го байта", соответственно, оставшихся битовых данных в группе, чтобы получать s байты двоичных данных. Двоичные данные, полученные из каждой группы, размещаются, чтобы получать k байтов декодированных двоичных данных.
Можно видеть, что, в вариантах осуществления настоящей заявки, во время кодирования, предварительно определенный алгоритм кодирования используется для того, чтобы преобразовывать двоичные данные в 7-битовые кодированные данные, и во время декодирования, соответствующий предварительно определенный алгоритм декодирования используется для того, чтобы восстанавливать 7-битовые кодированные данные в двоичные данные. По мере того, как длина данных увеличивается приблизительно на 14,3% после того, как двоичные данные преобразуются в 7-битовые кодированные данные, что намного меньше длины, увеличенной во время Base64-кодирования, кодированные файлы, полученные после приспособления вариантов осуществления настоящей заявки, требуют меньшего объема трафика во время передачи по сети и являются подходящими для сценария применения, имеющего строгие требования.
В примере варианта применения настоящей заявки, алгоритм кодирования используется для того, чтобы преобразовывать данные изображения origin.jpg в 7-битовые ASCII-кодированные данные, и соответствующий алгоритм декодирования восстанавливает 7-битовые ASCII-кодированные данные в двоичные данные.
var buf=new Buffer(1024);//установление буферной зоны, используемой для кодирования
data
origin.jpg
var data=fs.readFileSync('origin.jpg');// являются двоичными данными изображения
length
var length=data.length+Math.ceil(data.length/7);// является длиной 7-битовых кодированных данных после преобразования
body
var body=new Buffer(length);// являются 7-битовыми кодированными данными после преобразования
var offset=0;
var swap=0;
var count=0;
for (var i=0; i < data.length, i++) {
swap |=( (data [i] and 0×80) >> (i% 7+1) );
count++;
if (i===data.length - 1 ||count % 7===0) {
body.writeUInt8(swap,++offset);
swap=0;
}
data
body
data
}//начиная с первого байта , старшие биты каждых 7 байтов комбинируются, чтобы формировать ASCII-кодированные комбинированные битовые данные, где старший бит седьмого байта двоичных данных из каждых 7 байтов находится в бите 0, и старший бит первого байта двоичных данных находится в бите 6. Комбинированные битовые данные записываются в  один за другим до последнего байта .
for (var i=0; i < data.length; i++) {
body.writeUInt8(data [i] and 0×7f, ++offset);
data
body
}//начиная с первого байта , наименьшие 7 битов каждого байта используются для того, чтобы формировать ASCII-кодированные оставшиеся битовые данные, и они записываются в  один за другим.
temp
len
var len=temp.length-Math.ceil(temp.length/8);// является длиной двоичных данных после декодирования
buf
var buf=new Buffer(len),// является двоичными данными после декодирования
for (var i=0; i < buf.length; i++) {
var swap=0;
swap | = ((temp.readUInt8 (parseInt(i/7)) << (i% 7+1)) and 0×80);
swap |=temp.readUInt8(i+temp.length - len);
buf.writeUInt8(swap, i);
(temp.length-len)
temp
buf
}//первые  байтов  представляют собой комбинированные битовые данные, а остальные представляют собой оставшиеся битовые данные; начиная с первого байта комбинированных битовых данных, "бит 6 - бит 0" каждого байта извлекаются по очереди и вставляются в старшие биты оставшихся битовых данных по очереди и записываются в
Согласно реализации вышеприведенной последовательности операций, варианты осуществления настоящей заявки дополнительно предоставляют устройство для кодирования двоичных данных и устройство для декодирования двоичных данных. Эти два устройства оба могут реализовываться через программное обеспечение, через аппаратные средства либо через комбинацию аппаратных средств и программного обеспечения. При рассмотрении реализации через программное обеспечение в качестве примера, устройство в логическом смысле формируется через CPU (центральный блок обработки) элемента оборудования, который считывает соответствующие команды компьютерной программы в запоминающее устройство и выполняет их. С точки зрения аппаратных средств, в дополнение к CPU, запоминающему устройству и NVM (энергонезависимому запоминающему устройству), как показано на фиг. 5, оборудование, в котором нормально располагается устройство для кодирования двоичных данных или устройство для декодирования двоичных данных, также включает в себя другие аппаратные средства, такие как микросхема для приемо-передачи радиосигналов и/или плата для достижения функции сетевой связи.
Фиг. 6 показывает устройство для кодирования двоичных данных в варианте осуществления настоящей заявки, содержащее блок получения двоичных данных и блок 7-битового кодирования. Блок получения двоичных данных служит для получения двоичных данных, имеющих длину k байтов, где k является натуральным числом. Блок 7-битового кодирования служит для преобразования k байтов двоичных данных в (k+t) байтов 7-битовых кодированных данных с использованием предварительно определенного алгоритма кодирования, где t является минимальным целым числом, которое превышает или равно k/7.
В одном режиме реализации, предварительно определенный алгоритм кодирования содержит: извлечение предварительно определенного бита каждого байта из k байтов двоичных данных и комбинирование их в t байтов 7-битовых кодированных комбинированных битовых данных согласно заданному порядку битов, использование оставшихся 7 битов каждого байта двоичных данных в качестве k байтов 7-битовых кодированных оставшихся битовых данных и размещение k байтов 7-битовых кодированных оставшихся битовых данных и t байтов 7-битовых кодированных комбинированных битовых данных согласно заданному порядку байтов, чтобы формировать 7-битовые кодированные данные двоичных данных.
В вышеприведенном режиме реализации, заданный порядок байтов включает в себя: k байтов оставшихся битовых данных до или после t байтов комбинированных битовых данных, размещаемых согласно соответствующим двоичным данным.
В этом режиме реализации, заданный порядок битов включает в себя: использование предварительно определенных битов, извлеченных из s непрерывных байтов двоичных данных, в качестве "бит 0 - бит (s-1)" или "бит (s-1) - бит 0" 1 байта комбинированных битовых данных, где s является натуральным числом, не большим 7.
В вышеприведенном режиме реализации, предварительно определенный бит представляет собой старший бит каждого байта.
Фиг. 7 показывает устройство для декодирования двоичных данных в варианте осуществления настоящей заявки, содержащее блок получения подлежащих декодированию данных и блок 7-битового декодирования. Блок получения подлежащих декодированию данных служит для получения подлежащих декодированию 7-битовых кодированных данных, имеющих длину в p байтов, где p является натуральным числом, большим 1. Блок 7-битового декодирования служит для преобразования p байтов 7-битовых кодированных данных в (p-t) байтов двоичных данных с использованием предварительно определенного алгоритма декодирования, где t является минимальным целым числом, большим или равным p/8.
В одном режиме реализации, предварительно определенный алгоритм декодирования содержит: получение k байтов оставшихся битовых данных и t байтов комбинированных битовых данных из p байтов 7-битовых кодированных данных согласно заданному порядку байтов, где k является разностью, полученной посредством вычитания t из p; извлечение k битов из t байтов 7-битовых кодированных комбинированных битовых данных; и вставку каждого из извлеченных битов в предварительно определенный бит k байтов оставшихся битовых данных, соответствующих заданному порядку битов для бита, за счет чего получая k байтов двоичных данных.
В вышеприведенном режиме реализации, заданный порядок байтов включает в себя: k байтов оставшихся битовых данных до или после t байтов комбинированных битовых данных, размещаемых согласно соответствующим двоичным данным.
В вышеприведенном режиме реализации, заданный порядок битов включает в себя: "бит 0 - бит (s-1)" или "бит (s-1) - бит 0" 1 байта комбинированных битовых данных в соответствии с s непрерывных байтов оставшихся битовых данных, соответственно, где s является натуральным числом, не большим 7.
В вышеприведенном режиме реализации, предварительно определенный бит представляет собой старший бит каждого байта.
Вышеприведенное описание представляет собой предпочтительные варианты осуществления настоящей заявки и не имеет намерение ограничивать настоящую заявку. Все модификации, эквивалентные замены и улучшения, вносимые без отступления от сущности и принципа настоящей заявки, должны попадать в пределы объема настоящей заявки.
В типичной конфигурации, вычислительное оборудование содержит один или множество процессоров (CPU), интерфейсов ввода-вывода, сетевых интерфейсов и внутренних запоминающих устройств.
Внутреннее запоминающее устройство может иметь форму энергозависимого запоминающего устройства, оперативного запоминающего устройства (RAM) и/или энергонезависимого запоминающего устройства из числа машиночитаемых носителей, таких как постоянное запоминающее устройство (ROM) или флэш-память (флэш-RAM). Внутреннее запоминающее устройство представляет собой пример машиночитаемых носителей.
Машиночитаемые носители включают в себя энергонезависимые, энергозависимые, съемные и стационарные носители и могут осуществлять хранение информации посредством любого способа или технологии. Информация может представлять собой машиночитаемые инструкции, структуры данных, программные модули или другие данные. Примеры компьютерных носителей хранения данных включают в себя, без ограничения, оперативное запоминающее устройство на фазовых переходах (PRAM), статическое оперативное запоминающее устройство (SRAM), динамическое оперативное запоминающее устройство (DRAM) и другие типы оперативного запоминающего устройства (RAM), постоянное запоминающее устройство (ROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память или другие технологии запоминающих устройств, постоянное запоминающее устройство на компакт-дисках (CD-ROM), цифровой видеодиск (DVD) или другое оптическое запоминающее устройство, магнитную ленту на кассетах, запоминающее устройство на ленточных дисках или другие магнитные устройства хранения данных либо любые другие непередающие среды. Они могут использоваться для того, чтобы сохранять информацию, которая является доступной для компьютерных устройств. Согласно определению в этом документе, машиночитаемые носители не включают в себя энергозависимые среды, такие как модулированные сигналы данных и несущие.
Дополнительно следует отметить, что термины "включать в себя", "содержать" или их разновидности имеют намерение охватывать неисключительное включение таким образом, что, процесс, способ, товар или оборудование, включающее в себя последовательность элементов, не только включает в себя эти элементы, но также и включает в себя другие элементы, не определенные четко, либо также включает в себя элементы, внутренне присущие в таком процессе, способе, товаре или оборудовании. Если не ограничено в иных отношениях, элементы, заданные посредством формулировки "включать в себя один...", не исключают присутствие других, аналогичных элементов в процессе, способе, товаре или оборудования, включающем в себя элементы.
Специалисты в данной области техники должны понимать, что варианты осуществления настоящей заявки могут предоставляться в качестве способов, систем или компьютерных программных продуктов, так что настоящая заявка может приспосабливать форму чисто программного варианта осуществления, форму чисто аппаратного варианта осуществления или форму варианта осуществления, которая комбинирует программное обеспечение и аппаратные средства. Дополнительно, настоящая заявка может приспосабливать форму компьютерного программного продукта, реализованного в одном или множестве машиноприменимых носителей хранения данных (в том числе, но не только, в запоминающем устройстве на дисках, CD-ROM и оптическом запоминающем устройстве), которые содержат машиноприменимые программные коды.