On Apr 11, 2007, at 10:15 PM, E. Tejkowski wrote: > Forgive this repost, but I'm not seeing my original post appearing… > > > On Apr 11, 2007, at 4:14 PM, Charles Yeomans wrote: > >> On Apr 11, 2007, at 4:48 PM, Daniel Stenning wrote: >> >> >>> Anyone know how (in the shortest amount of code ) to get the >>> integer value >>> of an OSType - say 'abcd' ? >>> >> >> Here's a function that does not use a MemoryBlock. >> >> Function OSTypeToUInt32(x as OSType) As UInt32 >> dim char() as String = SplitB(x, "") >> return ((AscB(char(0))*256 + AscB(char(1)))*256 + AscB(char(2))) >> *256 + AscB(char(3)) >> End Function >> >> You could eliminate the split to array, replacing char(i) by MidB(x, >> i + 1). >> >> Function OSTypeToUInt32(x as OSType) As UInt32 >> return ((AscB(MidB(x, 1))*256 + AscB(MidB(x, 2)))*256 + AscB(MidB >> (x, 3)))*256 + AscB(MidB(x, 4)) >> End Function >> > > > Unless I'm overlooking something, I think Charles' examples are > missing POW. Here's the (somewhat verbose/old-school) function I use:
My functions are POW-free by design. > > Dim i, theLong, aChar As Integer > for i=4 downTo 1 > aChar=Asc(Mid(theOSType, i, 1)) > theLong=theLong+(aChar*(Pow(256, 4 - i ))) > next > return theLong > > And come to think of it, I think that all of these examples will fail > if used on Windows. In that case, you'd need to make the i-loop go in > the opposite direction (1 to 4). No -- A FourCharCode is always the string version of a big-endian UInt32. Charles Yeomans _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html>
