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;

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

 

 

你可能感兴趣的:(lua打印16进制)