QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 22195|回复: 7
打印 上一主题 下一主题

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

[复制链接]
字体大小: 正常 放大
654010905 实名认证       

2

主题

4

听众

282

积分

升级  91%

  • TA的每日心情
    开心
    2012-12-14 18:56
  • 签到天数: 83 天

    [LV.6]常住居民II

    群组: 数学趣味、游戏、IQ等

    群组: C 语言讨论组

    群组: PLC和单片机

    群组: 每天多学一点点

    跳转到指定楼层
    1#
    发表于 2012-4-2 11:59 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    hex_to_binary.m (599 Bytes, 下载次数: 37) binary_to_hex.m (202 Bytes, 下载次数: 39) 最近老师交给我一个任务,要求实现DES,AES等分组密码算法(用MATLAB实现),其中涉及到很多进制之间的相互转换:; S1 i: C! v, m0 t- A0 a
                    十六进制(字符串)<==>二进制(数字)6 H% h1 f8 ]- a6 K0 c$ r
    而MATLAB能实现的功能是
    : n  D1 p! m7 N  U4 v. q! j               1.十六进制(字符串)<==>十进制(数字):0 H* s" H* ^: m/ \- t
                     函数:dec2hex和hex2dec     
    & T. O7 b2 ?* s1 e( x% B% ]( V3 ~7 ?               2.十进制(数字)<==>二进制(字符串)
    9 v/ B4 ?3 D7 t. e) @0 Z                 函数:dec2bin和bin2dec+ G2 k- v% z: h
    本来想用matlab固有的函数进行十六进制(字符串)<==>二进制(数字),无奈二进制结果是字符串形式,也就是说,如果利用matlab固有函数做的话,最后还得把字符串形式的二进制数化成数组形式的二进制数。个人感觉这样太麻烦了,索性自己写了两个子函数,以便加密算法中随时调用:hex_to_binary  和   binary_to_hex。就在附件里面。虽然是一个很细节的东西,但是还是希望对大家有所帮助(PS:在下第一次发这种帖子,以前都是在社区里面分享别人的东西,现在不管好不好,先倒腾点东西出来吧!望大家多多支持!)5 b- l- Z2 Z4 C" U0 M$ m
    7 b& ?% |! ~3 e! k5 z
    8 p8 x' `! V0 ^6 i! |6 B( H
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持2 反对反对0 微信微信
    可以容忍自己不优秀,但是不能容忍自己不努力

    1

    主题

    7

    听众

    28

    积分

    升级  24.21%

  • TA的每日心情
    难过
    2013-9-13 20:47
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    自我介绍
    充实
    回复

    使用道具 举报

    0

    主题

    1

    听众

    3

    积分

    升级  60%

    该用户从未签到

    自我介绍
    很好
    回复

    使用道具 举报

    yaocaiyu        

    0

    主题

    9

    听众

    2

    积分

    升级  40%

    该用户从未签到

    自我介绍
    我我

    社区QQ达人

    感谢
    * T9 g5 G- a$ A. j% ^9 g3 Z
      收起(1)
    • 2459598212 2459598212 :我试了一下,二进制转十六进制那个不能运行,原因是要把字符类型转化为数值类型行,不然\'0\'=48,\'1\'=49,结果不对~
      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
      2023-02-24 15:33 回复
    • 我也说一句

    回复

    使用道具 举报

    ct395603        

    0

    主题

    8

    听众

    1

    积分

    升级  20%

    该用户从未签到

    这个正是我想要的,非常感谢
    + U! v% o* r7 a# e* n; |
    回复

    使用道具 举报

    5

    主题

    3

    听众

    105

    积分

    升级  2.5%

  • TA的每日心情
    擦汗
    2018-2-9 16:38
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    群组: Matlab讨论组

    群组: F题

    群组: E题

    群组: D题

    群组: C题

    回复

    使用道具 举报

    0

    主题

    2

    听众

    7

    积分

    升级  2.11%

    该用户从未签到

    , }& U3 t, I" i* P5 Y2 s$ v. n
    * a- N2 A) m) h, H( ]+ B
    " i# \- c6 H. K0 j' ]* k* G
    感谢分享4 Y2 ^0 S6 G5 G9 s- P
    回复

    使用道具 举报

    0

    主题

    2

    听众

    7

    积分

    升级  2.11%

    该用户从未签到

    / p# [4 t& P0 n9 |1 n: T
    - W* g' f6 }' H+ r

    . ~/ s! G7 Z% k: D6 ]6 x: j二进制转十六进制结果不对,因为没把字符的转换成数值类型的:使用str2num~
    7 Z9 X4 @( r& L3 vfunction out=binary_to_hex(in)
    . V# [0 Q! u5 S0 e' F, B6 tn=length(in);
    % g3 T0 b% Z/ q, O6 T. L4 V, B- Q- f) ufor i=1:n/4
    ; ]8 I2 b- Y# L* x    %字符ascii中0=48,1=49
    . K: }; B( A: s* {' V) L. [% o. {- ^    %str2num:将字符转化为数值类型
    2 D9 }' J( `1 B& H& M# D    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));
    9 K. C3 M* J$ H3 B9 S4 b1 v) f    out(i)=dec2hex(out(i));
    $ O5 O" R% v4 ~' M; B' v% uend
    ( W% }4 _% `: a9 h( q0 J% T$ S: J/ Zout=char(out);- J  T  ~; @( T" k( l" r/ z
    end
    9 \* h4 B5 S3 A$ c- @0 a; ~1 W8 K$ r7 e/ _; j" [* X6 a
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-10-10 08:25 , Processed in 4.205479 second(s), 96 queries .

    回顶部