C++(union), C#(伪union)实现 Java的Float.intBitsToFloat()方法
2016-04-01 09:13
751 查看
java:
c++:
C#
C# 虽然没有union,可以自己来实现,挺有意思。
</pre><pre name="code" class="java">int i = Float.intBitsToFloat(132.0232f); //1124337136 float f = Float.floatToRawIntBits(i); //132.0232
c++:
inline float intBitsToFloat(int i) { union { int i; float f; } u; u.i = i; return u.f; } inline int floatToRawIntBits(float f) { union { int i; float f; } u; u.f = f; return u.i; }
C#
public static float intBitsToFloat(int v) { byte[] buf = BitConverter.GetBytes(v); return BitConverter.ToSingle(buf, 0); } public static int floatToRawIntBits(float v) { byte[] buf = BitConverter.GetBytes(v); return BitConverter.ToInt32(buf, 0); }
C# 虽然没有union,可以自己来实现,挺有意思。
[StructLayout(LayoutKind.Explicit, Size = 8)] public struct Float { [FieldOffset(0)] int i; [FieldOffset(0)] float f; public static int floatToRawIntBits(float f) { Float u; u.i = 0; u.f = f; return u.i; } public static float intBitsToFloat(int i) { Float u; u.f = 0; u.i = i; return u.f; } }; using System.Runtime.InteropServices;
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 如何组织构建多文件 C 语言程序(二)
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序