654010905 发表于 2012-4-2 11:59

MATLAB中2进制与16进制数据之间的相互转化

最近老师交给我一个任务,要求实现DES,AES等分组密码算法(用MATLAB实现),其中涉及到很多进制之间的相互转换:
                十六进制(字符串)<==>二进制(数字)
而MATLAB能实现的功能是
               1.十六进制(字符串)<==>十进制(数字):
                 函数:dec2hex和hex2dec     
               2.十进制(数字)<==>二进制(字符串)
                 函数:dec2bin和bin2dec
本来想用matlab固有的函数进行十六进制(字符串)<==>二进制(数字),无奈二进制结果是字符串形式,也就是说,如果利用matlab固有函数做的话,最后还得把字符串形式的二进制数化成数组形式的二进制数。个人感觉这样太麻烦了,索性自己写了两个子函数,以便加密算法中随时调用:hex_to_binary  和   binary_to_hex。就在附件里面。虽然是一个很细节的东西,但是还是希望对大家有所帮助(PS:在下第一次发这种帖子,以前都是在社区里面分享别人的东西,现在不管好不好,先倒腾点东西出来吧!望大家多多支持!)


chenxiao6395 发表于 2013-7-22 07:36

收啦,楼主继续加油!能不能加好友?

他乡之客 发表于 2014-5-5 21:58

拿过来看看,不晓得有没有用

yaocaiyu 发表于 2015-5-7 12:31

:lol:lol:lol感谢

ct395603 发表于 2015-8-6 11:13

这个正是我想要的,非常感谢

2249039642 发表于 2017-11-12 16:50

支持一下。。。。。。。

2459598212 发表于 2023-2-24 14:51




感谢分享:'(

2459598212 发表于 2023-2-24 15:35




二进制转十六进制结果不对,因为没把字符的转换成数值类型的:使用str2num~
function out=binary_to_hex(in)
n=length(in);
for i=1:n/4
    %字符ascii中0=48,1=49
    %str2num:将字符转化为数值类型
    out(i)=str2double(in((i-1)*4+1))*8+str2double(in((i-1)*4+2))*4+str2double(in((i-1)*4+3))*2+str2double(in((i-1)*4+4));
    out(i)=dec2hex(out(i));
end
out=char(out);
end

页: [1]
查看完整版本: MATLAB中2进制与16进制数据之间的相互转化