l2002924700的个人空间 https://blog.eetop.cn/447114 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

使用perl语言进行进制转换

已有 8907 次阅读| 2011-12-11 12:41

       在进行验证的时候,有时需要产生激励数据。我使用perl语言产生随机的激励数据,但是由于perl语言里的random函数无法产生二进制或者十六进制的随机数,所以比如我要产生一个十六进制的二进制随机数,那么我就使用random函数产生一个介于0和65536之间的随机数,然后再将之转换为二进制或是十六进制,再用readmemh或readmemb分别针对十六进制和二进制读取数据。具体程序如下:
1、十进制转换为二进制
              #  /usr/bin/perl -w
              use strict;
              open Bin_File,"> Bin_Data.dat";//打开一个文件句柄,并将该句柄作为写句柄;
              my $i = 1;
              while($i <= 8) { //只产生8个数
                        my $Data = int(random(65536));
                        $Data = unpack("B16",$Data);
                        print Bin_File $Data." ";//因为verilog中的readmemb函数和readmemh函数所能读取的文本文件中间只能是空格,所以在写入的每个数据后都加一个空格;
                        $i = $i + 1;
               }
2、十进制转换为16进制
               # /usr/bin/perl
               use strict;
               open Hex_File,"> Hex_Data.dat";//打开一个文件句柄,并将该句柄作为写句柄;
               my $i = 1;
               while($i <= 8) {
                         my $Data = int(random(65536));
                         $Data = sprintf("%x",$Data);
                         print Bin_File $Data." ";
                         $i = $i + 1;
               }
以上就是我所写的程序,在具体的应用中也是可以的,但是对于perl中的unpack以及sprintf函数的用法我还不是特别清楚,所以如果哪位大侠认为我上面的程序有错误,也希望您能不吝赐教!


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 0

    粉丝
  • 0

    好友
  • 0

    获赞
  • 1

    评论
  • 1135

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 06:43 , Processed in 0.014135 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部