Upon investigation of the raw text file I found that the format follows
0xff 0xfe ( char 0x00 )*where the data I want is the char bytes.
Following this state machine
I wrote a small state machine perl script to convert the file
#!/usr/bin/perl -w use strict; my $char; sub unexpected; sub read_header_2; sub read_header_1 { read(\*STDIN, $char, 1) or return \&unexpected; ord($char) == 0xfe or return \&unexpected; return \&read_header_2; } sub read_character; sub read_header_2 { read(\*STDIN, $char, 1) or return undef; ord($char) == 0xff or return \&unexpected; return \&read_character; } sub write_character; sub read_character { read(\*STDIN, $char, 1) or return undef; return \&write_character; } sub read_null; sub write_character { print $char; return \&read_null; } sub read_null { read(\*STDIN, $char, 1) or return undef; ord($char) == 0x00 or return \&unexpected; return \&read_character; } sub unexpected { print "unexpected situation\n"; if(length $char) { print "found character: ". ord($char), "\n"; } else { print "found enf of stream\n"; } return undef; } my $state = \&read_header_1; while($state) { $state = &$state(); }which worked perfectly, and implemented the state machine directly.
Now I can save my text messages and have them readable.
No comments:
Post a Comment