Conversion from big endian to little endian

Blitz3D Forums/Blitz3D Programming/Conversion from big endian to little endian

Andy(Posted 2005) [#1]
Is there a really clever way to do this, or is the only way to do it the hard way?

Edit: I need to read a signed short in big-endian format.

Does anyone have a way of doing this easilly, or will I have to convert to little-endian and then convert to unsigned.

Andy


big10p(Posted 2005) [#2]
To swap the endian of a signed, 2byte short, I think you simply swap the byte order, like so:

((n And $00FF) Shl 8) Or ((n And $FF00) Shr 8)



Floyd(Posted 2005) [#3]
You must also adjust by 65536 to simulate a signed 16-bit value.
Print ConvertSignedShort( $0200 )
Print ConvertSignedShort( $0100 )
Print ConvertSignedShort( $0000 )
Print ConvertSignedShort( $FFFF )
Print ConvertSignedShort( $FEFF )

WaitKey


Function ConvertSignedShort( ss )  ; bottom two bytes of an Int.

	ss = ( ( ss And $ff00 ) Shr 8 ) Or ( ( ss And $ff ) Shl 8 )

	If ss < $8000
		Return ss
	Else
		Return ss - $10000
	End If
	
End Function



Andy(Posted 2005) [#4]
big10p and Floyd,

Thanks, you guys rock! It works perfectly!

Andy