реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как преобразовать bin строку в hex матрицу
Acvarif
сообщение Mar 24 2016, 20:37
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Имеется длинная bin строка. Нужно ее преобразовать в hex формат
Код
% Тест преобразования бинарной строки в hex
bin_str = '0101101111010101010010101001011001011011110101010100101010010110';
bin_str = reshape(bin_str, [], 2);
hex_str_t = zeros(1,2);
for i = 1:2

    bin_str_t = bin_str(:,i);
    % преобразования строки в hex
    hex_str = dec2hex(bin2dec(bin_str_t'));
    hex_str_t(1,i) = hex_str;

end

fprintf(' %s\n', hex_str);
fprintf('\n');
fprintf(' %s\n', hex_str_t);
fprintf('\n');

Дело в том, что бинарная строка должна быть не более 52 бит.
Поэтому приходится разбивать ее на 2.
Не получается в цикле записать результат преобразования hex_str в матрицу hex_str_t
Подскажите пожалуйста где ошибка.
Go to the top of the page
 
+Quote Post
Realking
сообщение Mar 25 2016, 07:44
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(Acvarif @ Mar 24 2016, 23:37) *
Имеется длинная bin строка. Нужно ее преобразовать в hex формат
Код
% Тест преобразования бинарной строки в hex
bin_str = '0101101111010101010010101001011001011011110101010100101010010110';
bin_str = reshape(bin_str, [], 2);
hex_str_t = zeros(1,2);
for i = 1:2

    bin_str_t = bin_str(:,i);
    % преобразования строки в hex
    hex_str = dec2hex(bin2dec(bin_str_t'));
    hex_str_t(1,i) = hex_str;

end

fprintf(' %s\n', hex_str);
fprintf('\n');
fprintf(' %s\n', hex_str_t);
fprintf('\n');

Дело в том, что бинарная строка должна быть не более 52 бит.
Поэтому приходится разбивать ее на 2.
Не получается в цикле записать результат преобразования hex_str в матрицу hex_str_t
Подскажите пожалуйста где ошибка.


можно так

hex_str_t = [];
for i = 1:2
bin_str_t = bin_str(:,i);
% преобразования строки в hex
hex_str = dec2hex(bin2dec(bin_str_t'));
hex_str_t = [hex_str_t hex_str];
end


а еще лучше

hex_str = strjoin(cellstr(dec2hex(bin2dec(bin_str'))), '');

или

bin_str = '0101101111010101010010101001011001011011110101010100101010010110';
hex_str = reshape(dec2hex(bin2dec(reshape(bin_str, [], 2)'))', 1, []);



--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Mar 25 2016, 09:55
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Спасибо. Помогло.
Хорошо и правильно работает
Код
hex_str = reshape(dec2hex(bin2dec(reshape(bin_str, [], 2)'))', 1, []);

Можно-ли эту строку hex записать в файл в формате INTEL HEX? https://ru.wikipedia.org/wiki/Intel_HEX


Сообщение отредактировал Acvarif - Mar 25 2016, 10:46
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 21:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016