my $databyte = "00";
my $checksum = "00";
my $address = "0000";
while ($line = <stdin> ) {
chomp($line);
$line =~ s/ //g;
$address = sprintf("%04X",hex($address) + hex($databyte));
$databyte = sprintf("%02X",length($line)/2);
$begstr = "$databyte" . "$address" . "00" . "$line";
$checksum = checksum($begstr);
$outstr = "$begstr" . "$checksum";
print ":$outstr\n";
}
print ":00000001FF";
exit;
sub checksum {
my $a = shift;
my $len = length($a)/2;
my $count = 0;
for($i = 0; $i < $len; $i++) {
my $ax = substr($a,$i*2,2);
$count = $count + hex($ax);
}
my $hcount = sprintf("%02X",$count);
my $b = ~ hex(substr($hcount, length($hcount)-2,2));
$b = $b - 4294967039;
my $c = sprintf("%02X",$b);
if(length($c) > 2) { return substr($c,length($c)-2,2) }
return $c;
}
Az oldalon több mint 100 bejegyzés van és még több hozzászólás, amennyiben tényleg érdekel egy téma nyugodtan használd a kereső-t, hogy megtaláld amit keresel!
2009. augusztus 14., péntek
Intel HEX formátum
Itt van egy kis példa program : (hogy mire jó és mi értelme van, azt majd később leírom (talán)
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése
Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.