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

S

Sniper Abandon

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
 
R

Robert Klemme

2009/11/19 Sniper Abandon said:
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?

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
 
D

Dalthon [BR]

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

Robert Klemme

2009/11/19 Dalthon said:
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
 

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

Forum statistics

Threads
473,772
Messages
2,569,592
Members
45,104
Latest member
LesliVqm09
Top