|
@@ -446,12 +446,13 @@ namespace Google.ProtocolBuffers
|
|
|
/// </summary>
|
|
|
public void WriteDoubleNoTag(double value)
|
|
|
{
|
|
|
- // TODO(jonskeet): Test this on different endiannesses
|
|
|
#if SILVERLIGHT2 || COMPACT_FRAMEWORK_35
|
|
|
- byte[] bytes = BitConverter.GetBytes(value);
|
|
|
- WriteRawBytes(bytes, 0, 8);
|
|
|
+ byte[] rawBytes = BitConverter.GetBytes(value);
|
|
|
+ if (!BitConverter.IsLittleEndian)
|
|
|
+ Array.Reverse(rawBytes);
|
|
|
+ WriteRawBytes(rawBytes, 0, 8);
|
|
|
#else
|
|
|
- WriteRawLittleEndian64((ulong)BitConverter.DoubleToInt64Bits(value));
|
|
|
+ WriteRawLittleEndian64((ulong)BitConverter.DoubleToInt64Bits(value));
|
|
|
#endif
|
|
|
}
|
|
|
|
|
@@ -460,10 +461,10 @@ namespace Google.ProtocolBuffers
|
|
|
/// </summary>
|
|
|
public void WriteFloatNoTag(float value)
|
|
|
{
|
|
|
- // TODO(jonskeet): Test this on different endiannesses
|
|
|
byte[] rawBytes = BitConverter.GetBytes(value);
|
|
|
- uint asInteger = BitConverter.ToUInt32(rawBytes, 0);
|
|
|
- WriteRawLittleEndian32(asInteger);
|
|
|
+ if (!BitConverter.IsLittleEndian)
|
|
|
+ Array.Reverse(rawBytes);
|
|
|
+ WriteRawBytes(rawBytes, 0, 4);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|