собственно, сабж таков:
у нас есть char, который весит 8 бит.
допустим, мы хотим создать кодировку, которая занимает 6 бит.
соответственно, массив char'ов надо использовать, используя 2 оставшихся бита или как-то по-другому.
хотя бы идею подкиньте, есть ли какое-то средство языка?
10 марта 2010 в 18:05
#12, а может так?
[1 2 3 4 5 6 1 2] [3 4 5 6 1 2 3 4] [5 6 1 2 3 4 5 6]
8 марта 2010 в 20:03
Жека, смутно… хотя примерно понял.
наверное, все же лучше и веселее №12, только как создать массив байтов?
8 марта 2010 в 18:04
просто создай массив байтов; а там уже пр помощи функций сдвига битов разбирайся.
пример:
байт1
[1 2 3 4 5 6 1 2][1 2 3 4 5 6 1 2][1 2 3 4 5 6 1 2][1 2 3 4 5 6 лишний лишний]
2 бита не жалко?
8 марта 2010 в 13:00
//www.google.com/codesearch/p?hl=ru#dR3YEbitojA...
Вот исходник base64 на си. Александр, надеюсь, общая идея будет ясна из него.
8 марта 2010 в 13:00
google "std::bitset" + //en.wikipedia.org/wiki/Bit_array
8 марта 2010 в 12:02
стандарт преобразования бинарных данных в текстовые, которые можно отправить письмом.
8 марта 2010 в 12:01
если вы имеете ввиду объявление 64-битной переменной, то 64 mod 6 != 0.
если другое – поясните
8 марта 2010 в 12:00
Евгений, решение "в лоб", аля
struct MS
{
bool f_b;
bool s_b;
bool t_b;
// etc…
}
однозначно не пройдет, понятно…
Николай, я по-моему четко обозначил задачу. Я же не спросил "Ребят, а надо ли париться об оставшихся двух битах??? 111?"
Александр, да, надо хранить строки, состоящие из символов, для кодирования которых необходимо и достаточно 6 бит. Надо поддерживать операцию кодирования и декодирования.
Про битовые поля надо бы почитать, примерно то, что мне нужно – надо только придумать как "склеить" "лишние" биты
8 марта 2010 в 12:00
а чем не устраивает base64?
8 марта 2010 в 11:01
Александр, поясни задачу. Тебе надо хранить строки, состоящие из символов, для кодирования которых достаточно 6 бит? Какие операции надо поддерживать – только перегон в 8-битную кодировку и обратно, или что-то еще?
Евгений, битовые поля есть во всех компиляторах си, но объектов с размером, не кратным 8 битам, нет ни в одном известном мне популярном компиляторе.
Николай, необходимости в асме нету.
8 марта 2010 в 11:01
в С можно создавать структуру с битовыми полями:
struct TNewType
{
char symbol:6;
unsigned reserved1:1;
unsigned reserved2:1;
};
Размер структуры – 1 байт. 2 бита можно использовать по своему усмотрению.
8 марта 2010 в 11:00
используй char, и не парься об оставшихся двух битах, меньше гемороя. или пиши на асме
8 марта 2010 в 10:05
мне кажется надо новый тип описывать, это ж компиллер должен выравнивать и память вделять, хотя не уверен что он будет выравнивать по битам. Если это и возможно то нужен компиллер новый