writing to binary data at arbitrary position

Dar Scott dsc at swcp.com
Fri Sep 15 16:48:27 EDT 2006

On Sep 15, 2006, at 12:09 PM, Viktoras Didziulis wrote:

> What is the fastest way (in Rev), for instance, to insert 3 bytes  
> of binary
> data after the 465th byte of data stored in variable myVar using  
> put, seek
> or whatever else is available? Or is the repeat loop the only way  
> to do
> this?..

If you mean that the bytes after the 465th byte are shifted down,  
then the method Mark Smith mentioned would work.  If you mean that  
you want to replace bytes 466, 467 and 468, then you can do this:

     put binDat into char 466 to 468 of myVar

(There is a feature request in bugzilla to allow the word 'byte' in  
this context.)

How you create binDat depends on the form of the binary data.  Look  
at the binaryEncode() function.  Exactly how you would use that  
depends on whether you need 3 byte numbers, a single 24-bit number or  
a byte plus a 16-bit number or something else.

You can also use numToChar() to create a byte that you think of as  
binary.  However, my opinion on this has changed and I now encourage  
use of binaryEncode() even for single bytes.  With binaryEncode() you  
can encode all three values at once.

If you are working with imageData and are replacing pixels, then this  
is the way to go.  If you are building a new imageData, don't forget  
the 0 byte--build all 4 bytes at once and then append to the variable  
with 'put...after...'.


Dar Scott
Dar Scott Consulting  and  Dar's Lab
8637 Horacio Place NE
Albuquerque, NM 87111

Lab, office, home:  +1 505 299 9497
Fax:                call above first
Skype:              ask

dsc at swcp.com

Computer programming

More information about the Use-livecode mailing list