04-12-2010
Editing binary files
I am working in C and need a solution for below problem:
I have a binary file, which needs to be edited in such a way no data is loss.
For example i have to insert 3 bytes of data at some position without changing the contents of the file.
if file has data as:
64795F8144054D595343435F813605494E44544D
and i need to add data 630000 like
64796300005F8144054D595343435F813605494E44544D
I have an Hex editor which enables me to see binary files in Hexadecimal mode.
I have tried fseek to reach that position and then write but it overwrites the current data bytes e.g,
6479630000054D595343435F813605494E44544D
data 5F8144 is lost.
but i want it to get inserted at that position as in earlier case.
Please share your comments.
Thanks in advance.
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Hi ,
i'm using special binary file (lotus notes) and modifying an hexadecimal address range with windows hex editor and it works fine !
The file is an AIX one and i'm forced to transfert (ftp) it before modifying it and re-transfert !
NOW i would do this directly under AIX !
I can... (4 Replies)
Discussion started by: Nicol
4 Replies
2. UNIX for Dummies Questions & Answers
hi i would like to know whether i can delete a part of a file in C
for eg. if my file contained
1234567890
and i want to delete
456
so that it becomes
1237890
is there a way i can do this.
well, one way i can achieve this is by creating a new file, copy whatever i want, then... (2 Replies)
Discussion started by: sameersbn
2 Replies
3. Shell Programming and Scripting
Hi All,
I need a solution on my following find command
find ./.. -name '*.file' -print
BTW This gives me the output as belows
./rtlsim/test/ADCONV0/infile/ad0_dagctst.file
./rtlsim/test/ADCONV0/user_command.file
./rtlsim/test/ADCONV0/simv.daidir/scsim.db.dir/scsim.db.file... (2 Replies)
Discussion started by: user_prady
2 Replies
4. Shell Programming and Scripting
Hi,
Is there a way to edit BINARY files in Unix.
Or even are there any commands (shellscript/perl) through which I can replace all the occurences of a string inside a BINARY file with another string ?? (1 Reply)
Discussion started by: cool.aquarian
1 Replies
5. Shell Programming and Scripting
Is there any command which I can apply from the command line to find and replace a particular text say "00:00:00:00" with "00" from all the files( where ever this text exists) of the current directory? (17 Replies)
Discussion started by: cobroraj
17 Replies
6. Shell Programming and Scripting
Hi All,
I have a folder that contains 100's of files and each file have a similar content like the following format:
((STBJa:200.0,((STBTz:200.0,(STSwe:200.0,(STDUw:200.0,(ST4Bu:200.0,STL2b:200.0):127.0):86.0):80.0):120.0,
STAHr:200.0):134.0):200.0,STuNg:200.0);What I need is to do is add "#1"... (2 Replies)
Discussion started by: Lucky Ali
2 Replies
7. Shell Programming and Scripting
Dear Experts,
I have one binary file which contains multiple 31k (31744) records.
Each record begins with "a6 82".
So the pattern is:
a6 82 (+31742 bytes)
a6 82 (+31742 bytes)
a6 82 (+31742 bytes)
a6 82 (+31742 bytes)
There are some corrupted files where record does... (6 Replies)
Discussion started by: dhiraj4mann
6 Replies
8. Shell Programming and Scripting
hello,
i have a problem.
suppose
file.txt
i want to add lines over those lines in a file if it starts and ends with how and "?" respectively.
i want output like
output
file.txt
thanks (4 Replies)
Discussion started by: yashwantkumar
4 Replies
9. Shell Programming and Scripting
#!/bin/bash
#
name=$1
type=$2
number=1
for file in ./**
do
if
then
filenumber=00$number
elif
then
filenumber=0$number
fi
tempname="$name""$filenumber"."$type"
if (4 Replies)
Discussion started by: TheGreatGizmo
4 Replies
10. UNIX for Dummies Questions & Answers
This is a smallpart of my input file.I want to change the ID values of entries having CMW as an entry.
Cont_1.266 . CMW 2958 3269 . - 0 PARENT=t:UM06506T0;ID=UM06506P0;rank=6
Cont_1.266 . CMW 3394 3505 . - 0 ... (3 Replies)
Discussion started by: sasdf
3 Replies
seek(n) Tcl Built-In Commands seek(n)
__________________________________________________________________________________________________________________________________________________
NAME
seek - Change the access position for an open channel
SYNOPSIS
seek channelId offset ?origin?
_________________________________________________________________
DESCRIPTION
Changes the current access position for channelId.
ChannelId must be an identifier for an open channel such as a Tcl standard channel (stdin, stdout, or stderr), the return value from an
invocation of open or socket, or the result of a channel creation command provided by a Tcl extension.
The offset and origin arguments specify the position at which the next read or write will occur for channelId. Offset must be an integer
(which may be negative) and origin must be one of the following:
start The new access position will be offset bytes from the start of the underlying file or device.
current The new access position will be offset bytes from the current access position; a negative offset moves the access position back-
wards in the underlying file or device.
end The new access position will be offset bytes from the end of the file or device. A negative offset places the access position
before the end of file, and a positive offset places the access position after the end of file.
The origin argument defaults to start.
The command flushes all buffered output for the channel before the command returns, even if the channel is in nonblocking mode. It also
discards any buffered and unread input. This command returns an empty string. An error occurs if this command is applied to channels
whose underlying file or device does not support seeking.
Note that offset values are byte offsets, not character offsets. Both seek and tell operate in terms of bytes, not characters, unlike
read.
EXAMPLES
Read a file twice:
set f [open file.txt]
set data1 [read $f]
seek $f 0
set data2 [read $f]
close $f
# $data1 == $data2 if the file wasn't updated
Read the last 10 bytes from a file:
set f [open file.data]
# This is guaranteed to work with binary data but
# may fail with other encodings...
fconfigure $f -translation binary
seek $f -10 end
set data [read $f 10]
close $f
SEE ALSO
file(n), open(n), close(n), gets(n), tell(n), Tcl_StandardChannels(3)
KEYWORDS
access position, file, seek
Tcl 8.1 seek(n)