- 论坛徽章:
- 0
|
求助,我有一个txt文档,类似于以下格式。每连续的4个数字是一个16进制数,这四个数字里,前两个是低位后两位是高位。
类似于0000,0081,0101,0182这样。
111.txt
00008100010182010202820203038403040485040505860506068706070788070808890809098A090A0A8B0A0B0B8C0B0C0C8D0C0D0D8E0D0E0E8F0E0F0F900F0010
00004000A10001017101D2014202A302230394031404950405057505E6055606D7064707B8073808C9085909EA096A0ADB0A3B0B9C0B0C0C8D0C1D0DAE0D4E0EDF0E
000091003101D2015202F30284031404A5042505A6052606A70617078807080899083909CA094A0ABB0A1B0B7B0BDC0B4C0CBD0C3D0DBE0D4E0EDF0E5F0FC00F0010
00007000E1005101D2014202B3022303A40314048504F5047505E6055606C7064707B8072808990819098A09FA096A0AEB0A5B0BCC0B3C0CBD0C2D0D9E0D0E0E7E0E
我想得到每个对应的十进制数字。要转成十进制,再除以16,得到如下:
gam.txt
0 8.0625 16.0625 24.125 32.125 40.125 48.1875 56.25 64.25 72.3125 80.3125 88.375 96.375 104.4375 112.4375 120.5 128.5 136.5625 144.5625 152.625 160.625 168.6875 176.6875 184.75 192.75 200.8125 208.8125 216.875 224.875 232.9375 240.9375 249 256
0 4 10.0625 16.0625 23.0625 29.125 36.125 42.1875 50.1875 57.25 65.25 73.3125 80.3125 87.3125 94.375 101.375 109.4375 116.4375 123.5 131.5 140.5625 149.5625 158.625 166.625 173.6875 179.6875 185.75 192.75 200.8125 209.8125 218.875 228.875 237.9375
0 9.0625 19.0625 29.125 37.125 47.1875 56.25 65.25 74.3125 82.3125 90.375 98.375 106.4375 113.4375 120.5 128.5 137.5625 147.5625 156.625 164.625 171.6875 177.6875 183.6875 189.75 196.75 203.8125 211.8125 219.875 228.875 237.9375 245.9375 252 256
0 7 14.0625 21.0625 29.125 36.125 43.1875 50.1875 58.25 65.25 72.3125 79.3125 87.3125 94.375 101.375 108.4375 116.4375 123.5 130.5 137.5625 145.5625 152.625 159.625 166.625 174.6875 181.6875 188.75 195.75 203.8125 210.8125 217.875 224.875 231.875
我的程序如下,我觉得我写的太麻烦了,刚入门没多久,看大神们有简单写法没。
#!/usr/bin/perl
open A,"111.txt"or die "$!";
open B,">","gma_16.txt"or die "$!";
while(<A>){
@a=$_=~/\w{2}/g;
print B "$a[1]$a[0] $a[3]$a[2] $a[5]$a[4] $a[7]$a[6] $a[9]$a[8] $a[11]$a[10] $a[13]$a[12] $a[15]$a[14] $a[17]$a[16] $a[19]$a[18] $a[21]$a[20] $a[23]$a[22] $a[25]$a[24] $a[27]$a[26] $a[29]$a[28] $a[31]$a[30] $a[33]$a[32] $a[35]$a[34] $a[37]$a[36] $a[39]$a[38] $a[41]$a[40] $a[43]$a[42] $a[45]$a[44] $a[47]$a[46] $a[49]$a[48] $a[51]$a[50] $a[53]$a[52] $a[55]$a[54] $a[57]$a[56] $a[59]$a[58] $a[61]$a[60] $a[63]$a[62] $a[65]$a[64] \n";
}
close A;
close B;
open GMA,">","gma.txt"or die "$!";
open B,"gma_16.txt"or die "$!";
while(<B>){
@b=split/\s+/,$_;
#$_=hex($_)/16;
$b[0]=hex($b[0])/16;
$b[1]=hex($b[1])/16;
$b[2]=hex($b[2])/16;
$b[3]=hex($b[3])/16;
$b[4]=hex($b[4])/16;
$b[5]=hex($b[5])/16;
$b[6]=hex($b[6])/16;
$b[7]=hex($b[7])/16;
$b[8]=hex($b[8])/16;
$b[9]=hex($b[9])/16;
$b[10]=hex($b[10])/16;
$b[11]=hex($b[11])/16;
$b[12]=hex($b[12])/16;
$b[13]=hex($b[13])/16;
$b[14]=hex($b[14])/16;
$b[15]=hex($b[15])/16;
$b[16]=hex($b[16])/16;
$b[17]=hex($b[17])/16;
$b[18]=hex($b[18])/16;
$b[19]=hex($b[19])/16;
$b[20]=hex($b[20])/16;
$b[21]=hex($b[21])/16;
$b[22]=hex($b[22])/16;
$b[23]=hex($b[23])/16;
$b[24]=hex($b[24])/16;
$b[25]=hex($b[25])/16;
$b[26]=hex($b[26])/16;
$b[27]=hex($b[27])/16;
$b[28]=hex($b[28])/16;
$b[29]=hex($b[29])/16;
$b[30]=hex($b[30])/16;
$b[31]=hex($b[31])/16;
$b[32]=hex($b[32])/16;
print GMA "$b[0] $b[1] $b[2] $b[3] $b[4] $b[5] $b[6] $b[7] $b[8] $b[9] $b[10] $b[11] $b[12] $b[13] $b[14] $b[15] $b[16] $b[17] $b[18] $b[19] $b[20] $b[21] $b[22] $b[23] $b[24] $b[25] $b[26] $b[27] $b[28] $b[29] $b[30] $b[31] $b[32]\n";
}
close GMA;
|
-
1.jpg
(39.79 KB, 下载次数: 55)
original data
|