BitStruct-28bit-Ruby Beginner

  • Thread starter Jaikanth Krishnaswamy
  • Start date
J

Jaikanth Krishnaswamy

Hi ,
I am a beginner to Ruby. I am using the ruby 1.9.2p0 (2010-08-18
revision 29036) [i686-linux] and bit-struct (0.13.6)
I am trying to construct a 28 bit length data element in my class
and am getting the following
error./usr/local/ruby/lib/ruby/gems/1.9.1/gems/bit-struct-0.13.6/lib/bit-struct/unsigned-field.rb:244:in
`add_accessors_to': unsupported:

I read through some limitations in
byte alignments of Ruby BitStruct.
I am hoping somebody can direct me to an example of how I can achieve a
28 bit field with BitStruct or some other technique..

Please let me know if this is an incorrect post for this forum and
redirect me.
 
J

Jaikanth Krishnaswamy

Yes I did read the documentation and was trying to see if some
workaround could be used for odd sized field.
This is part of a protocol simulation that the field is 28 bit long.
Unfortunately it cannot be broken down to more sensible chunks as you
suggested.

Tim Roberts wrote in post #963486:
Jaikanth Krishnaswamy said:
Hi ,
I am a beginner to Ruby. I am using the ruby 1.9.2p0 (2010-08-18
revision 29036) [i686-linux] and bit-struct (0.13.6)
I am trying to construct a 28 bit length data element in my class

And did you read the documentation that says BitStruct supports fields
of
size 1 to 16, or multiples of 8? 28 is not a supported size.
and am getting the following
error./usr/local/ruby/lib/ruby/gems/1.9.1/gems/bit-struct-0.13.6/lib/bit-struct/unsigned-field.rb:244:in
`add_accessors_to': unsupported:

That says you're using ruby 1.9.1, not that it matters much. The error
is
telling you that 28 bits is not a valid size.
I am hoping somebody can direct me to an example of how I can achieve a
28 bit field with BitStruct or some other technique..

Perhaps you should describe what you are actually trying to do. Are you
trying to parse a file that contains fields of oddly-sized data? There
may
be easier ways.

If nothing else, you can compose your field out of smaller sizes, like
one
fields of 24 bits and an adjacent field of 4 bits. It depends on what
your
actual task is.
 
P

Phillip Gawlowski

Yes I did read the documentation and was trying to see if some
workaround could be used for odd sized field.
This is part of a protocol simulation that the field is 28 bit long.
Unfortunately it cannot be broken down to more sensible chunks as you
suggested.

What about padding the 28bit data to 32bit length, with preceding
zeros, for example?

--
Phillip Gawlowski

Though the folk I have met,
(Ah, how soon!) they forget
When I've moved on to some other place,
There may be one or two,
When I've played and passed through,
Who'll remember my song or my face.
 
M

Michael Bruschkewitz

Jaikanth Krishnaswamy said:
Hi ,
I am a beginner to Ruby. I am using the ruby 1.9.2p0 (2010-08-18
revision 29036) [i686-linux] and bit-struct (0.13.6)
I am trying to construct a 28 bit length data element in my class
and am getting the following
error./usr/local/ruby/lib/ruby/gems/1.9.1/gems/bit-struct-0.13.6/lib/bit-struct/unsigned-field.rb:244:in
`add_accessors_to': unsupported:

Why not use binary string representation:
irb(main):019:0> b = "1234".unpack('B*').first
=> "00110001001100100011001100110100"
irb(main):020:0> [b[8..15]].pack 'B*'
=> "2"
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,008
Latest member
HaroldDark

Latest Threads

Top