免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2356 | 回复: 5
打印 上一主题 下一主题

Perl中大整数与长字符串的转换问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-23 22:54 |只看该作者 |倒序浏览
有个问题想的不是太清楚,希望大家能帮着讨论一下,梳理一下思路,都学习学习:

假设我有一个字符串变量$testBytes = "0x00" x 16;
我希望能将$testBytes像个整型变量一样,每次加1,即:变成"0x00"x15 . "0x01"、"0x00"x15 . "0x02"、"0x00"x15 . "0x03" …… 一直到"0x11"x16 。
不知道想要实现这样的效果有没有什么好的方法?
(我自己现在的思路就是:用个Math::BigInt类型的整型变量$var从0开始增加,然后,每次对$var模256,用chr()函数将取模得到的结果变为字符,就这样循环,将各个字符连接起来,最后将得到的字符串逆序,就是我想要的结果。)

表达得有点乱,还希望能有人耐心的看看,指导一下,谢谢了!

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
2 [报告]
发表于 2013-07-23 23:27 |只看该作者
你确定要生成 2^64 个字符串?
64位的 Perl 可以用 sprintf '%0#16x", $_ for 0 .. 2**64-1;

论坛徽章:
0
3 [报告]
发表于 2013-07-23 23:50 |只看该作者
回复 2# zhlong8


    不好意思,我又想了想,问题该是 $testBytes是一个16字节的字符串,我希望$testBytes的值能够从 0-2^128 这个区间中的数,转换为一个包含 16 个字符的字符串。

    例如:0 代表的就是 $testBytes = "0x00"x16
           (2^128 - 1)表示 $testBytes = "0xFF"x16

不知道这样你能不能看明白,不过你上面给出的那个例子我会去研究一下看看。

论坛徽章:
0
4 [报告]
发表于 2013-07-23 23:56 |只看该作者
回复 2# zhlong8


    即:16个字节,128位的字符串 $testBytes,我想将其128位二进制数依次加一,然后将这个数以每8位为一块,将每块用chr()转换成一个字符,16个字符连起来就是新的 $testBytes 了。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
5 [报告]
发表于 2013-07-24 08:55 |只看该作者
回复 3# UltimateSniper


    我的电脑一秒钟做500万次跑完 2^64 要十万年……

论坛徽章:
0
6 [报告]
发表于 2013-07-24 09:25 |只看该作者
回复 5# zhlong8


    好吧,其实我本不想这么做的,但是,因为要多线程,所以必须这样分段(与我这的具体模式有关),导致了这种问题,我现在很恼火是否要继续这样下去。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP