数学建模社区-数学中国

标题: MATLAB中2进制与16进制数据之间的相互转化 [打印本页]

作者: 654010905    时间: 2012-4-2 11:59
标题: MATLAB中2进制与16进制数据之间的相互转化
hex_to_binary.m (599 Bytes, 下载次数: 37) binary_to_hex.m (202 Bytes, 下载次数: 39) 最近老师交给我一个任务,要求实现DES,AES等分组密码算法(用MATLAB实现),其中涉及到很多进制之间的相互转换:7 ?! l$ W7 {+ b
                十六进制(字符串)<==>二进制(数字)
4 v! F$ r; f( c/ ?' v" `8 ]而MATLAB能实现的功能是4 E& Q1 g1 j1 `. p# a0 `  k
               1.十六进制(字符串)<==>十进制(数字):0 P, i9 Y; q1 B* H$ T
                 函数:dec2hex和hex2dec     : h6 _, A; @5 h, d7 e) h: L
               2.十进制(数字)<==>二进制(字符串)
3 D- v7 T# _+ j$ y4 t                 函数:dec2bin和bin2dec
) [- s) H7 v. \# y& x7 i本来想用matlab固有的函数进行十六进制(字符串)<==>二进制(数字),无奈二进制结果是字符串形式,也就是说,如果利用matlab固有函数做的话,最后还得把字符串形式的二进制数化成数组形式的二进制数。个人感觉这样太麻烦了,索性自己写了两个子函数,以便加密算法中随时调用:hex_to_binary  和   binary_to_hex。就在附件里面。虽然是一个很细节的东西,但是还是希望对大家有所帮助(PS:在下第一次发这种帖子,以前都是在社区里面分享别人的东西,现在不管好不好,先倒腾点东西出来吧!望大家多多支持!)
( w# l, d  L& x* [% e. l, n- ?1 c% O9 m- w1 n, u; ]
9 u! A6 }2 q% R

作者: chenxiao6395    时间: 2013-7-22 07:36
收啦,楼主继续加油!能不能加好友?
作者: 他乡之客    时间: 2014-5-5 21:58
拿过来看看,不晓得有没有用
作者: yaocaiyu    时间: 2015-5-7 12:31
感谢. R) K5 P7 Q& A6 S9 n" `  X9 j

作者: ct395603    时间: 2015-8-6 11:13
这个正是我想要的,非常感谢* f, A3 g5 l) s4 l7 g7 ?) b) b2 l; G

作者: 2249039642    时间: 2017-11-12 16:50
支持一下。。。。。。。
' {* I7 z5 U- t) i7 l7 q5 [
作者: 2459598212    时间: 2023-2-24 14:51

+ G" U& V8 G4 j% S% Y
, ~$ x& q* T% E: k! G" U
! x0 }# g2 Z; F5 p; G( {" S% J感谢分享
  K' x/ k% n+ G( Y8 R" a
作者: 2459598212    时间: 2023-2-24 15:35

8 _' u8 _" m" j1 z* Y
+ b" x0 H" f% @9 Q* B1 U% a! d% `% a: h! @
二进制转十六进制结果不对,因为没把字符的转换成数值类型的:使用str2num~
. O; n4 [, N4 S3 U, h5 Ofunction out=binary_to_hex(in)6 T- i) b8 ]% C" J) [- Z( v5 |$ h
n=length(in);
. O) [# p$ ^! P/ }# t: U1 F5 B0 ifor i=1:n/4
3 J$ E! o. C. J( T( I5 n8 K8 N* o    %字符ascii中0=48,1=49
2 E: K* t( {" X& \    %str2num:将字符转化为数值类型
: ~8 N+ |: G5 T- V+ A    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));7 y; f6 n% P1 z! Z* c, d( y$ [9 w
    out(i)=dec2hex(out(i));
4 }9 p5 f* b. ~, h  }5 l7 Q+ \; oend
' y6 `) P, _! x2 w4 }$ [out=char(out);
2 f" x, R7 G; _9 L, |1 C9 P6 Qend% ?$ l6 p0 W4 W3 M# ~* E: O

1 D+ T6 v3 w. j, M+ w& k8 `2 ~




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5