[#4766] Wiki — "Glen Stampoultzis" <trinexus@...>

21 messages 2000/09/04
[#4768] RE: Wiki — "NAKAMURA, Hiroshi" <nahi@...> 2000/09/04

Hi, Glen,

[#4783] Re: Wiki — Masatoshi SEKI <m_seki@...> 2000/09/04

[#4785] Re: Wiki — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/09/05

Howdy,

[#4883] Re-binding a block — Dave Thomas <Dave@...>

16 messages 2000/09/12

[#4930] Perl 6 rumblings -- RFC 225 (v1) Data: Superpositions — Conrad Schneiker <schneik@...>

Hi,

11 messages 2000/09/15

[#4936] Ruby Book Eng. translation editor's questions — Jon Babcock <jon@...>

20 messages 2000/09/16

[#5045] Proposal: Add constants to Math — Robert Feldt <feldt@...>

15 messages 2000/09/21

[#5077] Crazy idea? infix method calls — hal9000@...

This is a generalization of the "in" operator idea which I

17 messages 2000/09/22

[#5157] Compile Problem with 1.6.1 — Scott Billings <aerogems@...>

When I try to compile Ruby 1.6.1, I get the following error:

15 messages 2000/09/27

[ruby-talk:4854] Re: FEATURE REQUEST: Fixnum bitfields

From: Wayne Scott <wscott@...>
Date: 2000-09-11 17:37:15 UTC
List: ruby-talk #4854
From: matz@zetabits.com (Yukihiro Matsumoto)
> |why not:
> |
> |fixnum[bit,len]    access a bitfield in number
> |bignum[bit,len]    access a bitfield in number
> 
> Do you mean 0xbabe[16,8] returns 0xba?
> Hmm, is this useful?  Or just for completeness?

Well actually, 0xbabe[8,8] returns 0xba.  The bits start counting at
zero and go up.  I design processors and write scripts that mess with
bit fields all the time.

desc[36,4] = DATA_SEGMENT

is alot easier to read than

desc &= ~((1<<40) - (1<<36))
desc |= DATA_SEGMENT<<36

In perl I can do this stuff with the vec() function, but that is
really a hack.  When I saw the fixnum[bit] descussion eariler this
week I felt that Ruby could be much simpler.

> 
> |fixnum[Range]      access a bitfield in number
> |bignum[Range]      access a bitfield in number
> 
> Same as above.  I agree with your friend.  Persuade me.
As I said, I see no reason for Range, but it was included for symmetry.

> 
> |While I am on the subject of bitfields where is another question.
> |Supose I read a series or raw 256 bit data chunks from a file into
> |Strings.  How can I transfer them to Bignum's so i can do bitwise ORs
> |and ANDs on them.  (I want to convert my CRC checksum generator for
> |CPU caches from perl to Ruby.)
> 
> def bits2num(str)
>   n = 0
>   str.each_byte do |c|
>     n <<= 8
>     n |= c
>   end
>   n
> end
> 
> 							matz.

Yes I can do it all manually, but shouldn't there be a pack/unpack
format or special method to do this directly?  Maybe not.  I can add
methods myself in my script.

In perl it is not needed because bitstrings are implimented with the
normal strings.  You can read data from a file, use vec() to read and
write bit fields, use '&' and '|' to do masks and then just write the
data.  In Ruby you have to move back and forth to Bignums.

-Wayne


In This Thread