MCA*_*MCA 2 c# c++ variables pointers
我一直在将我的应用程序的某些部分从C++转换为C#.有这个编码/解码部分,我需要读取一个变量作为浮点,定义为uint:
uint result = 0;
... // a value is set to result
return (*((float *)&result)); // get result as a float value
Run Code Online (Sandbox Code Playgroud)
无论如何将最后一行转换为C#?谢谢你们..
您可以使用不安全的代码执行此操作 - 或者您可以使用BitConverter.GetBytes()将值转换为字节数组,然后BitConverter.ToSingle()转换回来.显然效率较低,但是如果您处于不能使用不安全代码的情况下,它会起作用.
编辑:我在MiscUtil中使用了另一种替代方法,使用类似C的"联合"工作更像原始示例,但是通过自定义结构:
[StructLayout(LayoutKind.Explicit)]
struct Int32SingleUnion
{
[FieldOffset(0)]
int i;
[FieldOffset(0)]
float f;
internal Int32SingleUnion(int i)
{
this.f = 0; // Just to keep the compiler happy
this.i = i;
}
internal Int32SingleUnion(float f)
{
this.i = 0; // Just to keep the compiler happy
this.f = f;
}
internal int AsInt32
{
get { return i; }
}
internal float AsSingle
{
get { return f; }
}
}
Run Code Online (Sandbox Code Playgroud)
(当然,你可以做同样的事情.)
| 归档时间: |
|
| 查看次数: |
381 次 |
| 最近记录: |