Reading and decoding binary data

prothero at earthednet.org prothero at earthednet.org
Thu Mar 13 12:16:20 EDT 2014


Folks:
Mainly, what I was wondering is if the byteToNum command is the correct one. In images, its the convert character to number, but I thought the character commands for binary data were going to be deprecated.

Thanks,
Bill
William Prothero
http://es.earthednet.org



On Mar 12, 2014, at 4:55 PM, prothero at earthednet.org wrote:

> Folks:
> Before I bang my head against the wall too much, I'd like to make sure I'm approaching this task correctly.
> I have a digital elevation file consisting of 16 bit 2's complement data. I first determine the position of the data for the desired location, then I do a binary read. 
> 
>  put getAFilePath("files/dems/") into fPath
>   put fPath&"ETOPO5.DAT" into theFile
>   open file theFile for binary read
>   if the result <> empty then
>      answer "Couldn't open DEM file"
>      exit readDemTest
>   end if
> 
> --Then i calculate the byte position where the data should be, then read it using:
>      read from file theFile at thePos for 8  --read 8 chars beginning at thePos (I should only need 2 to get the value)
>      put it into theDepths
>      put byteToNum(byte 1 of theDepths) into b1
>      put byteToNum(byte 2 of theDepths) into b2
> 
> --Then, because I don't remember the byte order, I'm trying each one to see which gives me sensible results
> --It should have a sign bit, so only 7 bits of the most significant byte should count, and the first one is the sign bit.
> 
>      if b1 > 127 then  --sign is negative. numbers from 128 to 255 should be negative
>         put -256+b1 into msb
>         put 256*msb - b2 into depth1
>      else  --sign is positive
>         put b1 into msb
>         put 256*msb + b2 into depth1
>      end if
> --try the other way
>      if b2 > 127 then
>         put -256+b2 into msb
>         put 256*msb - b1 into depth2
>      else
>         put b2 into msb
>         put 256*msb + b1 into depth2
>      end if
> 
> What I'm wondering before I spend more time on this, is whether the livecode commands are the correct ones for this. I have old C code that does some of the same processing, but I can't run it now to test.
> 
> Thanks,
> Bill
> 
> William Prothero
> http://es.earthednet.org
> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list