将Double转换为字节*

ray*_*enl 0 c# double byte

我需要一些C#代码将double转换为byte*.我知道我必须使用固定(和不安全?),但不完全确定如何...

我在这里看到了一些其他的例子,但没有一个完全相同.

提前致谢!

干杯

Arn*_* F. 5

你可以做:

unsafe
{
    fixed (byte* b = BitConverter.GetBytes(1.2d))
    {
        // Do stuff...
    }
}
Run Code Online (Sandbox Code Playgroud)

要么 :

public unsafe void YourMethod(double d)
{
    fixed (byte* b = BitConverter.GetBytes(d))
    {
        // Do stuff...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这是非常不必要的. (2认同)

Han*_*ant 5

只要double变量具有堆栈范围(局部变量或方法参数),您就可以简单地使用指针强制转换.这是有效的,因为堆栈范围变量不受垃圾收集器的移动,因此不必固定.避免必须将双重转换为byte[]第一个.与fixed关键字一样,限制同样适用,指针仅在方法体内有效:

    unsafe void Foo(double d) {
        byte* ptr = (byte*)&d;
        // Use ptr
        //...
    }
Run Code Online (Sandbox Code Playgroud)

BitConverter类完全相同的事情.