ho trovato un programmino perl che usa la funzione pack("N2a" etc etc
mi han detto che converte dei numeri in "32-bit signed big-endian integers" , con ActivePerl per winzozz non funziona sta cosa
i dati da passare al "pack" li conosco tutti e il ho in una tabella excel vorrei far una formula equivalente lasciando stare conversione perl e riconversione, si puo fare?
questo il prog :
a cui dovrei dare in pasto :
per ottenere:
la parte che mi da il pack sono tutti i simboli strani
mi han detto che converte dei numeri in "32-bit signed big-endian integers" , con ActivePerl per winzozz non funziona sta cosa


i dati da passare al "pack" li conosco tutti e il ho in una tabella excel vorrei far una formula equivalente lasciando stare conversione perl e riconversione, si puo fare?
questo il prog :
codice:
#!/usr/bin/perl eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if $running_under_some_shell; # this emulates #! processing on NIH machines. # (remove #! line above if indigestible) $/ = "\r\n"; # set input record separator $\ = "\r\n"; # set output record separator open IDX, ">idx"; while (<>) { chomp; if ($. == 1) { s/^.*CATURL/Glambda- CATIDX/; print IDX $_; } if ($. == 2) { $n = (@a = split(/\|/)); $offset = 0; for $i (0 .. $n-1) { @b = split(/:/, $a[$i]); if ($b[0] eq 'POSWGS') { if ($offset) { $Spos = "x" . $offset . "a" . $b[2]; } else { $Spos = "a" . $b[2]; } } if ($b[0] eq 'NAME') { if ($offset) { $Sname = "x" . $offset . "a" . $b[2]; } else { $Sname = "a" . $b[2]; } $namelen = $b[2]; } $offset += $b[2]; } } if ($. > 2) { @pos = split(/,/, unpack ($Spos, $_)); $name = unpack ($Sname, $_); @rec = ( @pos, $name ); push @data, [ @rec ]; } } $idlen = int(log($#data)/log(10) + 1); $delta = ($#data - 2) / int($#data / 50 + .9999); print IDX "ID:I:$idlen|POS:P:8|NAME:S:$namelen|_:S:0"; $j = 0; LOOP: for $i (0 .. $#data) { next LOOP if ($i < $j); $S = $S . pack("N2",$i,$data[$i][0]) . "|"; $j += $delta; } print IDX substr($S, 0, length($S) - 1) . "\0"; for $i (0 .. $#data) { print IDX sprintf("%*s", $idlen, $i) . pack("N2a" . $namelen, $data[$i][0], $data[$i][1], $data[$i][2]); } close IDX;
codice:
CATURL-eng/sf_41009.htm_ POSWGS:S:20|VILLAGE:S:30|CITY:S:31|NAME:S:35|STREE T:S:44|HOUSENUMBER:S:4|PHONE:S:17|COUNTRY:S:16|ENT P1:S:20|ENTP2:S:18|ENTP3:S:0|ENTP4:S:0|ENTP5:S:0|E NTP6:S:0|ENTP7:S:0|ENTP8:S:0|ENTP9:S:0|BRANDNAME:S :0|_:S:3 -184146484,335737713 LAS PALMAS DE GRAN CANARIA NEON DANCING CALLE LUIS MOROTE 61 +34928266079 ESPAÑA -184146484,335737713 ___ -112663196,462023829 CASCAIS DISCOTECA NEWS +351214857325 PORTUGAL -112663196,462023829 ___ -112410389,461600059 CASCAIS DISCOTECA COCONUTS AVENIDA REI HUMBERTO II DE ITÁLIA +351214844109 PORTUGAL -112410389,461600059 ___ -112368871,464839419ERICEIRA MAFRA OURIÇO RUA CAPITÃO JOÃO LOPES 8 +351261862138 PORTUGAL -112368871,464839419 ___ -111375183,468468070PRAIA DA AREIA BRANCA LOURINHÃ FOZ BAR PASSEIO DO MAR +351261471124 PORTUGAL -111375183,468468070 ___ -110906435,461852388 OEIRAS WALL STREET BAR & BISTRO ESTRADA DE PAÇO DE ARCOS +351214411292 PORTUGAL -110906435,461852388 ___ -109986477,462354899VENDA NOVA AMADORA ABEAS CORPUS RUA HENRIQUE DE PAIVA COUCEIRO 8 +351214351918 PORTUGAL -109986477,462354899 ___ -109759202,462343327 LISBOA BOITE BATUCADA RUA DR. JOÃO DE BARROS 5 +351217162506 PORTUGAL -109759202,462343327 ___ -109550061,462868029 ODIVELAS BY AVENIDA AMÁLIA RODRIGUES 49 +351219313430 PORTUGAL -109550061,462868029 ___ -109498760,461707552 LISBOA Z +351213973948 PORTUGAL -109498760,461707552 ___ -109492914,461709103 LISBOA ZONA DOCA +351213972010 PORTUGAL -109492914,461709103 ___ -109491005,461709581 LISBOA CELAT & IBEROS +351213976037 PORTUGAL -109491005,461709581 ___
per ottenere:
codice:
Glambda- CATIDX-eng/sf_41009.htm ID:I:4|POS:P:8|NAME:S:35|_:S:3 õ%Ì| 2ù~æÀ| dùØ6^| –ûÉ>,| ÈüåU| úýM*2| ,ý^)™| ^ýt¨Ø| ýác-| Âþ?>{| ôþ~| &þÔš°| Xþøš | Šÿ+F| ¼ÿ_Xü| îÿ˜g| ÿ½\^| Rÿâ:ó| „ÿò€\| ¶ #¥à| Ø j•Ð| ÙHÜ| <ÆB| n=´®| *ãW| Ò˜k%| £èH| 6¬jþ| hÉ X| šçè‚| Ìr>| þ>šo| 0_| bÙu"| ”åPà| Æ3³| øŸ| * ðâ| \.ÿ!| ŽbŠà| ÀnŠø| òo¬Ø| $q>| V|-| ˆ–@| º£–º| ìËi¯| ÷ì*| P| ‚a,| ´<¾&| æIQ| [Mu| JaÏÿ| |e‹]| ®ª¯T| àÑî| ݘå| Dîd| vö»ã| ¨¬Z| Ú7‡n| J£b| >e¦e| pu*[| ¢Í›| Ô”C0| À¡Ô| 8ñð[| j,&| ˜£S| Ê/Å1| üNX;| .m´˜| `…ÏY| ’‰ú| Ä–¼‡| öÉ™ƒ| (æÊÔ| ZíÊD| Œ ‘S| ¾“*| ðKü·| sÂ| LÜŽR| ~’ë| °Ž÷| â@eò| r'”| FšÀ™| xÂAˆ| ªÞuT| ÜáÃ¥| ë”÷| ;ú2À| m „| Ÿ FO(| Ñ Jì| )| 5 –¾Ü| g Ìß| ™ S¢| Ë )Ák| ô h=| & ÓVË| Xpì| Š‹§È| ¼š¹œ| îž„[| *;\| R¡I2| „¢û| ¶¤è| 褔@| ¥Ó| L¦«| ~ª#„| *Ü×}| Ñ_P™| èVti 0õ%ÌóqNEON DANCING ___ 1ùHåd‰ì•DISCOTECA NEWS ___ 2ùLÀëƒu;DISCOTECA COCONUTS ___ 3ùMc´âûOURIÇO ___ 4ù\Œ±ìAfFOZ BAR ___ 5ùc³½‡NäWALL STREET BAR & BISTRO ___ 6ùq½SŽùÓABEAS CORPUS ___ 7ùu5ŽÌŸBOITE BATUCADA ___ 8ùxf–Î=BY ___ 9ùy.x… Z ___ 10ùyEN…/ZONA DOCA ___ .....
