From: Pat Patterson Date: 2007-03-14T08:43:06+09:00 Subject: Re: Ruby Newbie Problems with deflate, base64... --Boundary_(ID_mu+yXICy1IUdkapMLx1Hjg) Content-type: text/plain; format=flowed; charset=ISO-8859-1 Content-transfer-encoding: 7BIT Thanks, Brian! That revealed an obvious bug in the code I was using to examine the deflated data (should have been 0.upto(deflated.length-1)). So Base64 /is/ working correctly. Deflate prepends 2 bytes (seems to be constant 0x789c for default deflate level) and appends 4 bytes (rather than 1 and 5 as I thought) to the deflated data. When I cut those off, I can get Ruby to work the same as PHP. Still - it would be nice if deflate worked the same as on Java, PHP, ... Cheers, Pat Brian Candler wrote: > On Tue, Mar 13, 2007 at 01:21:52PM +0900, Pat Patterson wrote: > >> While the Ruby >> >> deflated = Zlib::Deflate.deflate( "Hello world" ) >> myhex = "" >> 1.upto(deflated.length) { |i| myhex << "%02x" % deflated[i] } >> puts myhex >> >> Shows >> >> 9cf348cdc9c95728cf2fca49010018ab043d00 >> >> (BTW - if anyone knows a more succinct way to hex encode a string in >> Ruby, that would be useful) >> > > str = "\001\377" > puts str.unpack("H*") > -- Pat Patterson - pat.patterson@sun.com Federation Architect, Sun Microsystems, Inc. http://blogs.sun.com/superpat --Boundary_(ID_mu+yXICy1IUdkapMLx1Hjg)--