lua打印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;

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

 

 

posted @ 2012-11-04 22:08  Biiigfish  阅读(12528)  评论(0编辑  收藏  举报