数学建模社区-数学中国
标题:
MATLAB中2进制与16进制数据之间的相互转化
[打印本页]
作者:
654010905
时间:
2012-4-2 11:59
标题:
MATLAB中2进制与16进制数据之间的相互转化
hex_to_binary.m
(599 Bytes, 下载次数: 37)
2012-4-2 11:57 上传
点击文件名下载附件
十六进制(字符串)到二进制(整数数组)
下载积分: 体力 -2 点
binary_to_hex.m
(202 Bytes, 下载次数: 39)
2012-4-2 11:56 上传
点击文件名下载附件
二进制(整数数组)到十六进制(字符串)
下载积分: 体力 -2 点
最近老师交给我一个任务,要求实现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/4
2 }! 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$ z
2 h9 e* S: Y3 @1 I
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5