Christopher Stanton wrote:
> On Tuesday 11 November 2003 14:48, Andrew Gaffney wrote:
> > Christopher Stanton wrote:
> > > RedHat Linux 9
> > > Perl v5.8.0 built for i386-linux-thread-multi
> > >
> > > I am trying to parse a mjpeg stream out of an html response. The http
> > > server is using server push to push the stream of jpegs to the client. I
> > > have written a test client and am able to receive the stream but am
> > > having trouble figuring out what Perl libraries I need to use to separate
> > > and save the individual jpegs as actual jpegs and not MIME encoded data.
> > >
> > > The Content Type is "multipart/x-mixed-replace; boundary=--myboundary".
> > > "--myboundry" is the flag used to delimit the individual data fields.
> > >
> > > This is a stream of JPEGs so, the server will continue streaming as long
> > > as the connection is open. I am using the Net::HTTP library since I have
> > > to parse as it arrives rather than wait for the whole page to be
> > > downloaded (since it can't be).
> > >
> > > The stream's format:
Ignore everything that isn't among the following:
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
from:
http://www.freesoft.org/CIE/RFC/1521/7.htm
Since the characters listed above are the only significant ones in base64, which
is the encoding used in most mail attachments. Every four encoded characters
represent 3 bytes of binary data. That is, each character represents six bits.The
trick is to string each set of four characters together as a number, then to
output that number in binary form, rather than as its text representation. The
pack function should help with this, but I haven't used it much, so I'll leave it
to others to guide you there.
Say you have the string 'Mf8d':
(000000 + 12) * 64 = 768
(00768 + 31) * 64 = 51_136
(51_136 + 60) * 64 = 3_276_544 [Okay, I had to9 punt and use a calculator here]
3_276_544 + 29 = 3_276_573
from here you would have three bytes of binary data.
Joseph
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]