其他分享
首页 > 其他分享> > 在Silverlight中BigEndianBitConverter?

在Silverlight中BigEndianBitConverter?

作者:互联网

我正在尝试在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.

标签:endianness,unsafe,c,silverlight
来源: https://codeday.me/bug/20191210/2102754.html