Open a binary file-read bit-change bit-update same file

my Aim is i want to encrypt a file

i want to open a binary file

i want to read the 1-st bit
if the bit is “1” then update that position bit to “0” instantly
if the bit is “0” then update that position bit to “1” instantly

then i have to read 2-nd bit
do the same thing like above conversion


like i want to do this for all bit of that file


i know we can read the file into a array then we can do the
modification,etc
but i want to update on that same file object, and the file size may be
more then 1 GB

is it possible?
any idea and help is very much appreciated

2009/11/19 Sniper A. [email protected]:

is it possible?

Anything is possible. But doing it bitwise is extremely inefficient.
You should rather do it in chunks of, say, 1025 or 512 bytes or - even
better - use the cluster size of your file system.

XOR will be useful

irb(main):004:0> a = 11
=> 11
irb(main):005:0> sprintf “%08b → %08b”, a, a ^ 0xFF
=> “00001011 → 11110100”

Kind regards

robert

You can synchronize io setting file.sync = true to update on the same
file object

2009/11/19 Dalthon [BR] [email protected]:

You can synchronize io setting file.sync = true to update on the same
file object

That does only change the point in time when the change in the file
can be observed by other processes but it does not affect where the
changes are written. For that (i.e. writing to the same file) you
need File.open(name, “r+”) anyway.

If you use that option and do “bitwise” updates (actually only
bytewise is possible) efficiency will drop even more dramatically.

Kind regards

robert