From: "baumanj@..." Date: 2006-03-31T08:08:43+09:00 Subject: Re: unpack signed short in network (big-endian) byte order Perl's pack options seem to be largely the same. It has the same holes that ruby does. One interesting wrinkle is that where ruby uses the underscore ("_") suffix to enforce native lengths, perl uses a bang ("!"). I don't know why that's different. http://www.xav.com/perl/lib/Pod/perlfunc.html#item_pack Python has a rather different approach. There are only a few specifiers but integer length and byte-order are defined by a modifier at the front of the format string. http://docs.python.org/lib/module-struct.html I sort of like the Python idea, because then we wouldn't have to introduce more cryptic format specifiers. However, it eliminates the (potentially unlikely) ability to have different byte-ordering for different values within the array being packed. Perhaps the best solution is to allow the modifier at the beginning to establish a default, but allow modifiers after specifiers as well in order to override the default. On the other hand, maybe it would be best to stick to one or the other approach. The former is simpler and probably covers the common usage, but the latter is more similar to the way the function currently works. I don't know. Opinions? Eric Hodel wrote: > On Mar 30, 2006, at 1:38 PM, baumanj@gmail.com wrote: > > > Perhaps this should be a new subject like "adding formats for > > pack/unpack". I gave this a bit of thought, and there are quite a few > > formats that seem to be missing. I would naturally assume that there > > should be support for each combination of > > > > {unsigned, signed} x {native, network, little-endian} x {short, int, > > long} > > > > However, of these 18 formats, 8 are missing. There are more than > > enough > > unused characters to specify them (j J k K o O r R t T W y Y z). I > > tried to come up with consistent mappings based on what already exists > > and this is what I came up with (?s indicate that the format is not > > currently supported): > > [...] > > > I'm thinking of submitting an RCR for this, > > Don't bother with an RCR, just submit a patch to ruby-core. > > > but before I go through the > > effort of figuring out the c code to achieve it, I wanted some > > opinions > > as to whether this is worthwhile and whether the mappings are > > sensible. > > What does perl or python do for the same types? > > -- > Eric Hodel - drbrain@segment7.net - http://blog.segment7.net > This implementation is HODEL-HASH-9600 compliant > > http://trackmap.robotcoop.com