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