我需要一些C#代码将double转换为byte*.我知道我必须使用固定(和不安全?),但不完全确定如何...
我在这里看到了一些其他的例子,但没有一个完全相同.
提前致谢!
干杯
你可以做:
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)
只要double变量具有堆栈范围(局部变量或方法参数),您就可以简单地使用指针强制转换.这是有效的,因为堆栈范围变量不受垃圾收集器的移动,因此不必固定.避免必须将双重转换为byte[]第一个.与fixed关键字一样,限制同样适用,指针仅在方法体内有效:
unsafe void Foo(double d) {
byte* ptr = (byte*)&d;
// Use ptr
//...
}
Run Code Online (Sandbox Code Playgroud)
与BitConverter类完全相同的事情.
| 归档时间: |
|
| 查看次数: |
5407 次 |
| 最近记录: |