27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
||||||
1 | ||||||
Представление из бит в байт14.05.2014, 20:14. Показов 5886. Ответов 24
Метки нет (Все метки)
Вообще такая беда как представить биты в то что они были сначала,вот так я представляю байт в битах с помощью маски,а как обратно не знаю
1
|
14.05.2014, 20:14 | |
Ответы с готовыми решениями:
24
Закодировать файл. Взять 7 байт. Первый бит каждого байта переместить в 8 байт Порядок байт в слове и бит в байте Массив байт в бит 8 бит собрать в 1 байт |
Модератор
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,700
|
||||||
14.05.2014, 20:21 | 2 | |||||
1
|
27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
|
14.05.2014, 22:19 [ТС] | 3 |
можете сказать не грамотному что значит |=
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|||||||||||||||||||||
14.05.2014, 23:10 | 5 | ||||||||||||||||||||
Сообщение было отмечено Bdavid008 как решение
Решение
для разнообразия мог предложить такой вариант
пользоваться именами byte и bit не рекомендую в некоторых диалектах это типы byte чаще всего это unsigned char а bit в микроконтроллерах это действительно бит, эти диалекты как и процессоры позволяют работать с отдельными битами Добавлено через 7 минут здесь закралась одна маленькая ошибка, которая может испортить все дело в том, что старший бит 0x80 записывается в младший элемент массива поправить можно хотя бы так
1
|
27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
||||||
15.05.2014, 00:39 [ТС] | 6 | |||||
у меня вообще массив чаровский потому что fin.read(buf, sizeof(buf)); read не принимает ансигнет чар,что не работает как я хочу, могу весь код скинуть const int N = 8;
1
|
27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
||||||
15.05.2014, 18:53 [ТС] | 8 | |||||
fin.read((char*) buf, sizeof(buf));я сделал так ,но все равно разно выдает
Добавлено через 7 минут точнее когда перевожу обратно с бит в байт выдает разное Добавлено через 17 часов 49 минут Сделал как вы сказали не помогло
1
|
27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
|||||||||||||||||||||
15.05.2014, 19:14 [ТС] | 10 | ||||||||||||||||||||
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
15.05.2014, 19:29 | 11 |
в смысле исходный?
пред записью в buf[i] чистить его нужно(записать 0)
что заk где оно меняется? у тебя цикл по j
почему я и попросил прокомментировать каждую строчку, тогда бы ты заметил что то о чем думаешь и что исполняет программа это несколько разные вещи далее как объявлен byte?
1
|
27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
||||||
15.05.2014, 19:56 [ТС] | 12 | |||||
ксттати я там на касипорил с циклами вот так должно быть
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
15.05.2014, 20:09 | 13 |
теперь смотри
перед первым циклом k равна 0 потом после отработки цикла for (k; k < i; k++) k=8 далее i = i + 8; 8+8=16 k = k + 8; 8+8=16 второй раз цикл не исполнится k < i 16 < 16 ложь следовательно строчку k = k + 8 выбрось и открой для себя отладчик пару раз пройдешь пошагово и найдешь ошибки Добавлено через 1 минуту в последнем решении есть еще одна принципиальная ошибка найдешь? или подсказать?
1
|
27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
||||||
15.05.2014, 20:49 [ТС] | 14 | |||||
все равно не работает ,я уже не знаю что делать
да я уже вообще не знаю,подскажите пожалуйста Добавлено через 1 минуту так у меня же идет k=0 далее k+8 то есть k=8 а i = 8 ;i+8=16 Добавлено через 1 минуту а понял кажись оно же во время цикла увеличивается на 8 ,вот я .... Добавлено через 1 минуту И все равно выдает не то что задано начально
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
15.05.2014, 21:08 | 15 |
64 бита соответственно 8 байт
цикл крутится 64 раза соответственно размер buf 64 байта= 512 бит!!!! разберись с размерностью, запутался в битах и байтах для начала попробуй перевести 1 байт( 8 бит), лучше выделить в отдельную функцию и только потом работай с массивом
1
|
27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
||||||
15.05.2014, 21:24 [ТС] | 16 | |||||
а если вам не сложно можете показать как что то я вообще запутался
0
|
27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
|
15.05.2014, 21:51 [ТС] | 18 |
byte & 0x01 ? bit[k] = 1 : bit[k] = 0;//маска по которой я сравниваю
k++; я не вставил походу соррри мой косяк)не внимательность ,простите ,спасибо что обьясняете,просто я дес реалзую и поэтому биты нужны
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
15.05.2014, 22:03 | 19 |
Смотрю я на все эти битоё... и понимаю, что std::bitset по вам плачет.
0
|
27 / 27 / 0
Регистрация: 24.03.2014
Сообщений: 77
|
|
15.05.2014, 22:36 [ТС] | 20 |
Понимаешь у меня препод любит оптимизацию )я тут и так с хитрил в массив интовский все загнал , а тут еще подключать библиотеку битсет)
0
|
15.05.2014, 22:36 | |
15.05.2014, 22:36 | |
Помогаю со студенческими работами здесь
20
Конвертирование бит в байт Ребуса БИТ+БАЙТ=СЛОВО Считать Бит/Байт из файла! Конвертация массива бит в массив байт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |