import tango.io.Stdout; void ConvertFloatToBytes(float Value,inout byte[] Bytes) { uint ByteVal1, ByteVal2, ByteVal3, ByteVal4; asm { mov EAX, Value; and EAX, 0xFF000000; shr EAX, 24; mov ByteVal1, EAX; mov EAX, Value; and EAX, 0x00FF0000; shr EAX, 16; mov ByteVal2, EAX; mov EAX, Value; and EAX, 0x0000FF00; shr EAX, 8; mov ByteVal3, EAX; mov EAX, Value; and EAX, 0x000000FF; mov ByteVal4, EAX; } Bytes[0] = cast(byte)ByteVal1; Bytes[1] = cast(byte)ByteVal2; Bytes[2] = cast(byte)ByteVal3; Bytes[3] = cast(byte)ByteVal4; } float ConvertBytesToFloat(byte Bytes[4]) { float retfloat = 0.0; uint ByteVal1, ByteVal2, ByteVal3, ByteVal4; ByteVal1 = cast(uint)Bytes[0]; ByteVal2 = cast(uint)Bytes[1]; ByteVal3 = cast(uint)Bytes[2]; ByteVal4 = cast(uint)Bytes[3]; asm { mov EAX, ByteVal1; shl EAX, 24; mov retfloat, EAX; mov EAX, ByteVal2; shl EAX, 16; or EAX, retfloat; mov retfloat, EAX; mov EAX, ByteVal3; shl EAX, 8; or EAX, retfloat; mov retfloat, EAX; mov EAX, ByteVal4; or EAX, retfloat; mov retfloat, EAX; } return retfloat; } void main () { byte[] bb; bb.length=4; ConvertFloatToBytes(3.5,bb); for(int i=0;i<bb.length;i++) { Stdout(bb[i]).newline; } //结果和VB.net转换后顺序相反 Stdout(ConvertBytesToFloat([64,96,0,0])).newline; }