我正在尝试在Silverlight中使用MiscUtil.Conversion实用程序.
http://www.yoda.arachsys.com/csharp/miscutil/
当我尝试对其进行编译时,出现错误,指出Silverlight的BitConverter类没有以下两种方法:
DoubleToInt64Bits
Int64BitsToDouble
好吧,我打开了Reflector,并在mscorlib中找到了它们:
public unsafe long DoubleToInt64Bits(double value)
{
return *(((long*)&value));
}
public unsafe double Int64BitsToDouble(long value)
{
return *(((double*) &value));
}
但是,这样做的问题是Silverlight不允许使用不安全的代码.在项目属性菜单中,“允许不安全代码”旁边有一个空复选框,但是您不能更改该值.
如何在Silverlight中做到这一点?
解决方法:
看一下BitConverter.ToDouble(byte[], int)
和BitConverter.GetBytes(double)
.如果它们存在于Silverlight中,它们可能就足够了.无论如何,我将针对协议缓冲区进行调查-如果找到一个好的解决方案,我会将其移植回MiscUtil.