From: Tim Pease Date: 2007-02-10T03:23:53+09:00 Subject: Re: How to manipulate binary file On 2/7/07, Minxing Liu wrote: > I love Ruby very much and now Ruby is my first language.But now I meet a > problem on Ruby.I want to do as follows: > 1:Open a file in binary mode > 2:Shift the bit in a algorithm > 3:Save the file > > I don't know how to shift the bit stream in Ruby.Can any one give me an > advice??? > As mentioned before, you can use the >> and << operators to perform bit shift operations, but these only work with integers. You will need to use the pack and unpack methods to convert the strings you read from the file into integers. str = IO.read('myfile') ary = str.unpack('N*') ary.map! {|int| int >> 2} str = ary.pack('N*') File.open('anotherfile','w') {|fd| fd.write str} This example assumes you have a file full of 32-bit integers in big-endian format. It will shift each integer 2 bits to the right. Blessings, TwP