将 int 位转换为 float 位

2024-03-14

我正在创建一个缓冲区,该缓冲区将在横幅中读/写,在其中我可以完全消除 TCP 分段带来的问题。我遇到的唯一问题是浮点变量,除了浮点之外,其他一切都工作正常。我找不到任何有关如何将 int32 位转换为浮点数的信息。

将 float 转换为 int 位时,使用以下方法(直接从 java 源代码中提取并转换)

private int floatToIntBits(float value)
{
    int result = BitConverter.ToInt32(BitConverter.GetBytes(value), 0);
    if (((result & 0x7F800000) == 0x7F800000) && (result & 0x80000000) != 0)
        result = 0x7fc00000;
    return result;
}

然而,现在我需要做相反的事情,不幸的是,BitConverter 类中没有任何与 float 一起使用的函数。

我在 JavaDocs 中也找不到太多信息,没有任何我个人可以使用的信息,您可以找到信息here http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/lang/Float.java#Float.intBitsToFloat%28int%29.


令人烦恼的是,如果你正在使用double and long, 有BitConverter.DoubleToInt64Bits and BitConverter.Int64BitsToDouble。我真的不知道为什么没有Single / Int32等价物,因为它迫使你创建一个毫无意义的byte[]在堆上(它甚至不允许您传递预先存在的缓冲区)。

如果您乐意使用unsafe代码,你实际上可以通过一个简单的数据重击来完成这一切,而不需要任何方法调用或数组:

public static unsafe int SingleToInt32Bits(float value) {
    return *(int*)(&value);
}
public static unsafe float Int32BitsToSingle(int value) {
    return *(float*)(&value);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 int 位转换为 float 位 的相关文章

随机推荐

  • 跨线程操作无效:从创建它的线程以外的线程访问控制“textBox1”[重复]

    这个问题在这里已经有答案了 我想使用 UART 将温度值从微控制器发送到 C 接口并显示温度Label Content 这是我的微控制器代码 while 1 key scan get value of temp if Usart Data
  • 具有多个按钮和多个视频的 Listactivity

    我有一个 listactivity 应用程序 由 5 行组成 每行包含一个文本和 5 个按钮 文本和按钮都是可单击的 文本将打开 MyDay 活动 即文本视图 当您单击任何按钮时 它必须打开视频视图屏幕 其工作正常 如下图所示 但我的问题是
  • jQuery.each() 如何处理关联数组(对象)?

    我有一个关联数组 里面有两个对象 运行这个 myassoc each 回调仅运行一次 回调参数 索引和对象 也分别返回 0 和整个关联数组 人们会期望jQuery each 对数组中的每个元素运行 返回正确的键作为索引 返回正确的元素作为对
  • 替换 PhotoSwipe 库中的图像

    我有一个照片滑动 http www photoswipe com 我的页面上的画廊是这样以编程方式创建的 var instance window Code PhotoSwipe attach image options 现在我想更新图库中的
  • 在 Django 单元测试中使用会话对象

    我正在编写一个登录视图 并想为该视图添加单元测试 我的观点是这样的 def login request if request POST usrname request POST get username password request P
  • NLog - 删除超过 X 天的日志

    如何删除日志早于 X 天的文件 这很简单 但我在一个文件夹中只记录一天的日志 我的 NLog config 如下所示
  • Gnuplot 列堆叠直方图 - 行/行计数

    我有一个数据文件 其中包含未定义数量的条目 如下所示 A B C D E 1 0 2 5 4 7 4 3 4 1 8 7 4 0 7 1 1 第一行代表工作时间 然后以交替的方式暂停等等 为了可视化这一点 我通过定义两种具有不同颜色的线条样
  • 打印 char 的十进制值

    打印字符的十进制值的程序 include
  • Microsoft.Azure.NotificationHubs 1.0.9 是否与 .NET Core 2.0 兼容?

    我们将NotificationHubs 1 0 9 版与 NetCore 2 0 和 Net Framework 4 7 结合使用 在编译时 我们收到此警告 包 Microsoft Azure NOtificationHubs 1 0 9
  • 在角度4中为不同页面设置不同布局的最佳方法

    我是 Angular 4 的新手 我想要实现的是为应用程序中的不同页面设置不同的布局页眉和页脚 我有三种不同的情况 登录 注册页面 无页眉 无页脚 路线 登录 注册 营销网站页面 这是根路径 它有页眉和页脚 这些部分大多在登录之前出现 路线
  • Java/Wicket:使用资源编译基本的 Hello World

    我正在关注这个 Hello World Wicket 应用程序的示例 https www ibm com developerworks web library wa aj wicket https www ibm com developer
  • JNI - 在 Java 和 Native 代码之间传递大量数据

    我正在努力实现以下目标 1 我在java端有一个代表图像的字节数组 2 我需要让我的本机代码访问它 3 本机代码使用 GraphicsMagick 解码该图像 并通过调用 resize 创建一堆缩略图 它还计算图像的感知哈希 该哈希可以是向
  • Java Web 应用程序中的唯一序列号

    我一直想知道生成唯一 ID 的正确做法是什么 事情是在我的网络应用程序中 我将有一个插件系统 当用户注册一个插件时 我想为其生成一个唯一的序列号 我一直在考虑将所有数字存储在服 务器上的数据库或文件中 生成随机数并检查它是否已存在于数据库
  • 控制 make 的详细程度

    我正在使用 makefile 来编译由许多组成的程序 c文件 并且任何时间make被调用时 它仅编译上次运行后修改的那些文件 直到这里没有什么特别的 为了避免屏幕混乱 我在前面添加了 在每个的开头 CC 打电话 在它之前我打印一个定制的ec
  • Magento 2 设计主题选项卡丢失

    你好 我正在尝试 magento 2 并努力安装新主题 因为设计主题未显示在 商店 gt 配置 gt 设计 下 它已移至内容 设计 配置
  • 在实际设备中安装.apk文件仅用于测试

    我想在实际设备上测试我的应用程序 那么我该如何进行呢 它是附件吗sign in并使用zipalign为此目的 或者它们在准备发布我的申请时有用吗 有没有办法在不使用 eclipse 的情况下在实际设备上测试我的应用程序 下载并安装安卓软件开
  • Spring-mvc-jpa 与 Maven 错误创建 bean

    这是我的第一个问题 我是 Spring MVC 和 Jpa 的新手 我遇到了这个麻烦 我自己无法弄清楚 我尝试在 Google 上搜索 但没有找到与此错误相关的内容 我已将所有配置文件存储在 src main resources META
  • 在 Android 布局中对齐左右边缘的文本视图

    我正在开始使用Android 我无法进行简单的布局 我想用一个LinearLayout到位置二TextViews在单行中 一TextView一个在左侧 另一个在右侧 类似于 CSS 中的 float left float right 这可能
  • Typescript 属性装饰器可以为类设置元数据吗?

    在打字稿中 是否可以使用属性装饰器来设置类的元数据 考虑下面的代码 类装饰器的 目标 显然与属性装饰器的 目标 不同 我可以从另一个派生出一个吗 import reflect metadata const MY CLASS DECORATO
  • 将 int 位转换为 float 位

    我正在创建一个缓冲区 该缓冲区将在横幅中读 写 在其中我可以完全消除 TCP 分段带来的问题 我遇到的唯一问题是浮点变量 除了浮点之外 其他一切都工作正常 我找不到任何有关如何将 int32 位转换为浮点数的信息 将 float 转换为 i