数学建模社区-数学中国

标题: 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实现),其中涉及到很多进制之间的相互转换:) Y; Q; {7 @$ K0 L2 u; U+ b
                十六进制(字符串)<==>二进制(数字)
& {6 }4 s3 c* d: T( w. \而MATLAB能实现的功能是
" Q* @8 {- l; V6 J2 B2 ^* I               1.十六进制(字符串)<==>十进制(数字):
, f$ `% B2 z) G  N" n) E                 函数:dec2hex和hex2dec     
! L+ ?" P+ b% q/ r. f# e+ |/ w: B               2.十进制(数字)<==>二进制(字符串)
& G6 [, H, N8 M6 i# s                 函数:dec2bin和bin2dec
4 ~0 A2 l" c: u/ [8 W5 i! `9 |本来想用matlab固有的函数进行十六进制(字符串)<==>二进制(数字),无奈二进制结果是字符串形式,也就是说,如果利用matlab固有函数做的话,最后还得把字符串形式的二进制数化成数组形式的二进制数。个人感觉这样太麻烦了,索性自己写了两个子函数,以便加密算法中随时调用:hex_to_binary  和   binary_to_hex。就在附件里面。虽然是一个很细节的东西,但是还是希望对大家有所帮助(PS:在下第一次发这种帖子,以前都是在社区里面分享别人的东西,现在不管好不好,先倒腾点东西出来吧!望大家多多支持!): B5 w! N! [' Y; t7 z
- N, d, Q! ^3 j

" k) u6 [% g1 L: J; e. @/ Q. W
作者: chenxiao6395    时间: 2013-7-22 07:36
收啦,楼主继续加油!能不能加好友?
作者: 他乡之客    时间: 2014-5-5 21:58
拿过来看看,不晓得有没有用
作者: yaocaiyu    时间: 2015-5-7 12:31
感谢
5 ?! F0 t9 I+ S7 n/ R. J
作者: ct395603    时间: 2015-8-6 11:13
这个正是我想要的,非常感谢
% S2 C( T3 a  g- y- d
作者: 2249039642    时间: 2017-11-12 16:50
支持一下。。。。。。。
. F: D9 i7 z/ }. n
作者: 2459598212    时间: 2023-2-24 14:51
. M4 R2 z8 V" X# S* H
6 |9 p3 |. I$ P) e
; M: w8 T0 k9 e: G' D
感谢分享+ Y  v) G# G; n3 }1 g

作者: 2459598212    时间: 2023-2-24 15:35
; J, M9 Q! ?: f

  H' P7 M/ B9 ^# A2 _8 T- i! W5 S  m; N3 Y$ Z$ @
二进制转十六进制结果不对,因为没把字符的转换成数值类型的:使用str2num~+ N2 z. \0 {- [, Z1 F6 S. [8 K2 h2 ^
function out=binary_to_hex(in)
/ g- P, X5 U% H9 S! V9 u% d1 @n=length(in);2 q- H# y" h9 d( J8 i9 x$ z
for i=1:n/42 }! b+ P5 x4 i1 r8 V! ?  P- r
    %字符ascii中0=48,1=49  Q. U. e% h- @+ w0 n7 C! D. L
    %str2num:将字符转化为数值类型3 o5 ]$ J) y! i8 M1 @& w
    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));
+ y7 }+ L. k# h8 m" ]3 G    out(i)=dec2hex(out(i));: f0 B1 u" F6 H1 F2 E& d# f
end* N2 Z/ ?& c6 P6 u' E: B
out=char(out);/ Y$ u2 V2 R% ~* K/ i2 f0 P, B
end
3 Z& Y6 S, W4 u$ z2 h9 e* S: Y3 @1 I





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