lua打印16进制

这篇博客讲述了作者在Lua中使用string.sub和string.format函数来处理16进制字符串的过程。通过示例小程序,展示了如何从字符串中截取部分字符以及格式化输出,虽然过程中遇到了一些困扰,但最终成功实现了16进制的打印。

唔,这个折腾了半天。。。

今天学到的两个函数string.sub和string.format。

string.sub(s,i,j),将s的第i个到第j个字符取出,i缺省为1,j缺省为-1

string.format(),唔,完全可以当作是C里面的printf来用!

今天写的一个小程序:

#!/usr/bin/env  lua

here = 0
for line in io.lines("./sin512.mif"do
        here=here + 1
        if here < 7 then
                print(line)
        elseif (here - 7)%8 == 0 then
                line = string.sub(line,5)
                print(string.format("%04X",(here-7)/8)..line)
        end
end

然后,sin512的内容是这样的:

DEPTH = 512;
WIDTH = 8;
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT
        BEGIN
0000 : 0080;
0001 : 0081;
0002 : 0083;
0003 : 0084;
0004 : 0086;
0005 : 0087;
0006 : 0089;
0007 : 008A;
0008 : 008C;
0009 : 008E;
000A : 008F;
000B : 0091;
000C : 0092;
000D : 0094;
...
01FC : 0079;
01FD : 007B;
01FE : 007C;
01FF : 007E;
end;

打印出来是这样的:

DEPTH = 512;
WIDTH = 8;
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT 
    BEGIN
0000 : 0080;
0001 : 008C;
0002 : 0098;
0003 : 00A5;
0004 : 00B0;
0005 : 00BC;
0006 : 00C6;
0007 : 00D0;
0008 : 00DA;
0009 : 00E2;
000A : 00EA;
000B : 00F0;
000C : 00F5;
000D : 00FA;
000E : 00FD;
000F : 00FE;
0010 : 00FF;
0011 : 00FE;
0012 : 00FD;
0013 : 00FA;
0014 : 00F5;
0015 : 00F0;
0016 : 00EA;
0017 : 00E2;
0018 : 00DA;
0019 : 00D0;
001A : 00C6;
001B : 00BC;
001C : 00B0;
001D : 00A5;
001E : 0098;
001F : 008C;
0020 : 007F;
0021 : 0073;
0022 : 0067;
0023 : 005A;
0024 : 004F;
0025 : 0043;
0026 : 0039;
0027 : 002F;
0028 : 0025;
0029 : 001D;
002A : 0015;
002B : 000F;
002C : 000A;
002D : 0005;
002E : 0002;
002F : 0001;
0030 : 0000;
0031 : 0001;
0032 : 0002;
0033 : 0005;
0034 : 000A;
0035 : 000F;
0036 : 0015;
0037 : 001D;
0038 : 0025;
0039 : 002F;
003A : 0039;
003B : 0043;
003C : 004F;
003D : 005A;
003E : 0067;
003F : 0073;
0040;

总的来说是干了件蠢事,但是干的还算开心哈! 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值