This lesson will show you how to open a binary file, process binary data and write binary data to a file.
Reading a Binary File Into LiveCode
When loading data into LiveCode from a file you have two options - load the data as text or load the data as binary. Loading file data as binary means that the LiveCode engine will load the data as-is, without converting any line feeds or return characters. The same holds true when writing a file to disk as well.
You can choose one of two methods for loading the data.
1) Use the commands open file, read from file and close file.
put "/path/to/myimage.png" into theFilePathopen file theFilepath for binary readread from file theFilePath until endput it into theBinaryDataclose file theFilePath
2) Use the URL keyword with the put command, prefixing the file path with "binfile:".
put "/path/to/myimage.png" into theFilePathput URL ("binfile:" & theFilePath) into theBinaryData
Either approach allows you to place binary data into a variable so that it can be processed.
Accessing Bytes In Binary Data
With LiveCode you can access individual bytes in binary data by using the byte chunk. For example, if I want to access byte 8 in some binary data I could do the following:
## Assume that binary data is stored in the variable theBinaryDataput byte 8 of theBinaryData into theByte## Loop through all bytes in datarepeat for each byte theByte in theBinaryData-- process theByte here (but don't modify directly)end repeat
Decoding Binary Data
LiveCode also allows you to decode binary data into various formats using the binaryDecode function. For example, if you wanted to decode the 8-byte signature of PNG data into hexadecimal digits you could do the following:
## Assume the variable thePNGData already has PNG data stored in it.## Convert first 8 bytes to hexadecimal digitsput binarydecode("H16", thePNGData, theSignature) into theNumConversions## The variable theSignature now contains '89504e470d0a1a0a' if theSignature contains valid data.put theSignature
Writing a Binary File From LiveCode
Writing data from LiveCode to a file is the same as loading the data - you must explicitly tell the LiveCode engine that you want to write the data as binary data.
You can choose one of two methods for writing the data.
1) Use the commands open file, write to file and close file.
put "/path/to/myimage.png" into theFilePathopen file theFilepath for binary write ## you might also use 'binary update' here to modify part of filewrite theBinaryData to file theFilePathclose file theFilePath
2) Use the URL keyword with the put command, prefixing the file path with "binfile:".
put "/path/to/myimage.png" into theFilePathput theBinaryData into URL ("binfile:" & theFilePath)
Either approach allows you to write binary data to a file. One difference to be aware of is that open file allows you the option of updating part of a file while the put form does not.