Big/Little Endian and Externals - Was how to Display/Print a Hex Number???

John Craig jc at spl21.net
Tue Feb 13 08:30:09 EST 2007


Dave, here's a function I've used to convert big endien numbers.  pData 
is a big endien value read directly from a binary file.  If pSigned is 
empty then the data is assumed to be unsigned.  Hopefully this will be 
of some help.

function littleEndien pData, pSigned
  put length(pData) into tLen
  put 0 into tResult
  repeat with i = 1 to tLen
    add charToNum(char -i of pData) * (2 ^ ((i - 1) * 8)) to tResult
  end repeat
  if pSigned <> empty then
    put tLen * 8 into tBits
    put 2 ^ (tBits - 1) into tMSB
    if (tResult bitAnd tMSB) > 0 then
      put 2 ^ tBits - 1 into tAll
      put -((tResult bitXOr tAll) + 1) into tResult
    end if
  end if
  return tResult
end littleEndien

Dave wrote:
> Hi,
>
> That works great, thanks a lot. One other thing though:
>
> I have an external that will eventually have to work on Mac/Intel, 
> Mac/PowerPC and Windows. The value that is being returned is 
> 0x00000001, however on an Intel Mac it's being displayed as 
> 0x01000000. e.g. it's a Big/Little Endian issue. Is there a standard 
> way to handle this for both platforms???
>
> Thanks a lot for your help.
> All the Best
> Dave
>
> On 13 Feb 2007, at 11:23, Mark Smith wrote:
>
>> If it's a revolution number, you can use <put 
>> baseConvert(myStatus,10,16)>, if it's a 4 byte binary value, you can
>>
>> put empty into tHexStatus
>> get binaryDecode("H*", myStatus, tHexStatus)
>>
>> and tHexStatus should now contain the value as as hex chars.
>>
>> Hope this helps,
>>
>> Best,
>>
>> Mark
>> On 13 Feb 2007, at 10:52, Dave wrote:
>>
>>> Hi,
>>>
>>> I have a parameter that is passed back to RunRev in a Variable from 
>>> an External Command, e.g. the TranScript line is:
>>>
>>> put myExternalFunction("myHandle") into myStatus
>>>
>>> and the C/C++ line in the External is:
>>>
>>> SetVariableEx(theArgumentArrayPtr[0],"",&myHandle,&myStatus);
>>>
>>> I would now like to display the "handle" as a Hex Value in RunRev 
>>> but for the life of me I can't think how to do it! Guess my brain 
>>> has gone to sleep today! Any help would be appreciated!
>>>
>>> Thanks a lot and All the Best
>>> Dave
>>>
>>> _______________________________________________
>>> use-revolution mailing list
>>> use-revolution at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your 
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your 
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>




More information about the use-livecode mailing list