数学建模社区-数学中国

标题: 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实现),其中涉及到很多进制之间的相互转换:
; X1 B: k$ R* K4 h                十六进制(字符串)<==>二进制(数字). E; W" {4 r, b& r/ i. ]
而MATLAB能实现的功能是
4 g! n- L; C' `; z) l               1.十六进制(字符串)<==>十进制(数字):, U; L2 A, L. n: A) I
                 函数:dec2hex和hex2dec     $ M8 u5 T! W5 Z; [4 \" @
               2.十进制(数字)<==>二进制(字符串)
" l* p7 i. @) w8 G                 函数:dec2bin和bin2dec3 q1 b" f8 a# V& Y) R7 t% S
本来想用matlab固有的函数进行十六进制(字符串)<==>二进制(数字),无奈二进制结果是字符串形式,也就是说,如果利用matlab固有函数做的话,最后还得把字符串形式的二进制数化成数组形式的二进制数。个人感觉这样太麻烦了,索性自己写了两个子函数,以便加密算法中随时调用:hex_to_binary  和   binary_to_hex。就在附件里面。虽然是一个很细节的东西,但是还是希望对大家有所帮助(PS:在下第一次发这种帖子,以前都是在社区里面分享别人的东西,现在不管好不好,先倒腾点东西出来吧!望大家多多支持!)
( ]: f2 h0 T& `# K0 G' K- V6 V0 j, ^, c; P3 L
- ~& q& Y8 L; Y) g- M

作者: chenxiao6395    时间: 2013-7-22 07:36
收啦,楼主继续加油!能不能加好友?
作者: 他乡之客    时间: 2014-5-5 21:58
拿过来看看,不晓得有没有用
作者: yaocaiyu    时间: 2015-5-7 12:31
感谢0 A7 Z+ {7 s3 Z3 l) Q' `

作者: ct395603    时间: 2015-8-6 11:13
这个正是我想要的,非常感谢' M7 N1 ?0 ^5 G3 O, ?

作者: 2249039642    时间: 2017-11-12 16:50
支持一下。。。。。。。
; O4 c9 w8 `6 [' E' f) x" o
作者: 2459598212    时间: 2023-2-24 14:51
8 q, F) `% b0 n0 G/ l: Y( R

3 {% u, }0 t3 v; P8 B5 K
* j7 z% w. l1 D$ |8 M! V% j感谢分享2 p$ Q! i! C- k7 z, @; b" q

作者: 2459598212    时间: 2023-2-24 15:35

+ @; m2 d* T9 A0 C# I
. M* p/ `0 r& J; ^# _5 [6 l. O0 X% J) {1 n4 v! s* a% E% }
二进制转十六进制结果不对,因为没把字符的转换成数值类型的:使用str2num~: [+ M4 e9 B, q7 x
function out=binary_to_hex(in)
# T2 h8 o. _$ o+ M7 Dn=length(in);
+ K( c, e6 M2 E1 ^7 O; C" L+ X8 Nfor i=1:n/4
+ e8 q5 L. n2 b& p    %字符ascii中0=48,1=49
( d6 S8 s: h1 d; k" v' a    %str2num:将字符转化为数值类型; H7 d3 Z* j! {: Q3 f3 r+ T
    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));
! G; R; u" _0 o0 P    out(i)=dec2hex(out(i));
4 v* e( L+ `' N! J4 {% s% f1 Rend6 g$ h' |+ L) \8 ?
out=char(out);
5 I3 f8 K% W' A3 S  Uend
5 N( s! O4 }3 x. F" H  V# C' z: g3 v: L' Q3 r8 x$ Z





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