”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 Go 中如何将字节数组转换为有符号整数和浮点数?

在 Go 中如何将字节数组转换为有符号整数和浮点数?

发布于2024-11-07
浏览:813

How can I convert byte arrays to signed integers and floats in Go?

Go 中将字节数组转换为有符号整数和浮点数

在 Go 中,二进制包提供了从 []byte 转换无符号整数的函数数组,例如binary.LittleEndian.Uint16()和binary.BigEndian.Uint32()。然而,有符号整数或浮点数没有直接等价物。

缺少有符号整数转换函数的原因

缺少有符号整数转换函数的主要原因是事实上,将二进制表示解释为有符号或无符号值是编程逻辑的问题。 []byte 数组本身仅包含原始二进制数据,可以根据应用程序的要求将其解释为有符号或无符号。

如何转换为有符号整数

要将无符号整数值转换为有符号整数,可以使用简单的类型转换。由于相同大小的无符号和有符号整数的内存布局相同,因此使用 int16(a) 将 a 从 uint16 转换为 int16 将保留原始二进制表示形式,同时分配适当的符号。

转换为浮点数

从无符号整数转换为浮点数需要更多的参与。 math 包提供了用于此目的的函数:math.Float32frombits() 和 math.Float64frombits()。相反,math.Float32bits() 和 math.Float64bits() 可用于获取浮点值的无符号整数表示形式。

使用 Binary.Read() 和 Binary.Write()

二进制包还包括 Read() 和 Write() 函数,它们可以在后台更有效地执行这些转换。这些函数允许您直接读取类型值,而无需中间类型转换。

使用 Binary.Read() 进行浮点转换的示例

考虑以下内容例如:

b := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40}

var pi float64
buf := bytes.NewReader(b)
err := binary.Read(buf, binary.LittleEndian, &pi)
if err != nil {
    fmt.Println("binary.Read failed:", err)
}

fmt.Println(pi) // Output: 3.141592653589793
最新教程 更多>
  • npm 与 npx
    npm 与 npx
    如果您一直在使用 Node.js,您可能遇到过 npm 和 npx。 虽然它们听起来很相似并且都是 Node.js 生态系统不可或缺的一部分,但它们有不同的用途。这篇文章将探讨 npm 和 npx 之间的差异,帮助您了解何时以及为何使用它们。 什么是NPM? NPM 是 Node ...
    编程 发布于2024-11-08
  • Python 中的链式赋值如何工作?它们真的相当于多个顺序分配吗?
    Python 中的链式赋值如何工作?它们真的相当于多个顺序分配吗?
    理解 Python 中的链式赋值Python 中的链式赋值,例如“x = y = somefunction()”这样的表达式,引发了人们的关注关于它们与多个顺序赋值的等价性的讨论(“x = somefunction(); y = somefunction()”)。为了澄清这个问题,让我们详细探讨一下...
    编程 发布于2024-11-08
  • 如何使用 Gorilla Websocket 在 Go Websocket 应用程序中向特定客户端发送目标消息?
    如何使用 Gorilla Websocket 在 Go Websocket 应用程序中向特定客户端发送目标消息?
    Go with Gorilla Websocket 中的特定客户端消息传递在 websocket 通信领域,向特定客户端发送消息的能力对于构建实时应用程序至关重要。然而,默认的 websocket 示例通常演示同时向所有连接的客户端广播消息。为了解决这个问题,我们可以采用一种方法,为每个客户端分配一...
    编程 发布于2024-11-08
  • O - 开闭原理 (OCP)
    O - 开闭原理 (OCP)
    What is Open/Closed Principle(OCP)? According to the Open/Closed Principle, "Objects or entities (such as classes, modules, functions, etc.) ...
    编程 发布于2024-11-08
  • C 的力量:创建为世界提供动力的系统
    C 的力量:创建为世界提供动力的系统
    C 是一种强大的编程语言,因其高效、可移植和低级控制而闻名。它广泛用于开发关键任务系统,如操作系统、嵌入式系统和数据结构。其特点包括:高效:C 代码直接编译为机器代码,实现更高执行效率。可移植:C 可以跨多种平台运行,便于在各种设备上部署应用程序。低级访问:C 提供对硬件和内存的低级访问,允许精细控...
    编程 发布于2024-11-08
  • Google Sheets 到 MySQL 只需几分钟
    Google Sheets 到 MySQL 只需几分钟
    Google Sheets 数据导入 MySQL:初学者指南 您是否希望将 Google Sheets 数据转换为 MySQL 数据库?如果是这样,那么您来对地方了!在这个适合初学者的教程中,我们将引导您完成将 Google Sheets 数据导入 MySQL 数据库的过程。 如果您没有编码背景,请...
    编程 发布于2024-11-08
  • 如何在 MySQL 中将纪元数字转换为人类可读的日期?
    如何在 MySQL 中将纪元数字转换为人类可读的日期?
    在 MySQL 中将纪元数转换为人类可读的日期在数据库管理领域,经常需要将纪元数转换为人类可读的日期。纪元编号表示自定义纪元以来的某个时间点,通常用于在 MySQL 等数据库系统中存储时态数据。假设您有一个纪元编号,例如 1389422614485,它代表一个特定的时间点。该值的数据类型是varch...
    编程 发布于2024-11-08
  • 介绍 simpledev.css
    介绍 simpledev.css
    simpledev.css 是一个新的 CSS 框架,我将其描述为大多数无类框架。我称其为无类,因为许多代码使用类型选择器,因此您不必添加许多类来设置网页样式。有一些类,但我们尽量将它们保持在最低限度(到目前为止只有大约 42 个类)。 让我们回顾一下下面的一些功能! 特征 大部分是...
    编程 发布于2024-11-08
  • 掌握图像分割:传统技术如何在数字时代仍然大放异彩
    掌握图像分割:传统技术如何在数字时代仍然大放异彩
    介绍 图像分割是计算机视觉中最基本的过程之一,它允许系统分解和分析图像内的各个区域。无论您是在处理对象识别、医学成像还是自动驾驶,分割都可以将图像分解为有意义的部分。 尽管深度学习模型在这项任务中越来越受欢迎,但数字图像处理中的传统技术仍然强大且实用。本文回顾的方法包括阈值处理、边...
    编程 发布于2024-11-08
  • 掌握 Angular Table 中可调整大小的列:开发人员分步指南
    掌握 Angular Table 中可调整大小的列:开发人员分步指南
    如何在 Angular 表中创建可调整大小的列:分步指南 Angular Material 表提供了一种时尚的数据显示方式。然而,用户通常需要额外的功能,例如调整表列大小以更好地控制数据显示的能力。在本指南中,我们将逐步介绍使用自定义指令在 Angular 表中创建可调整大小的列的...
    编程 发布于2024-11-08
  • 如何按子值升序对多维 PHP 数组进行排序?
    如何按子值升序对多维 PHP 数组进行排序?
    PHP:按子值对多维数组进行排序此问题旨在根据“mid”子值对多维 PHP 数组进行排序。为了实现这一点,响应者建议使用 usort 函数,它允许基于比较的排序。代码如下:function cmp($a, $b) { return $a["mid"] - $b[&...
    编程 发布于2024-11-08
  • 如何在 Django 中创建一个简单的调度程序
    如何在 Django 中创建一个简单的调度程序
    如果您需要每 X 分钟/秒等运行一个函数来进行一些清理,触发一些操作,您可以在线程模块和 django 自定义 cli 的帮助下执行一个简单的调度程序命令。 假设我想每 5 秒调用一个函数以在外部 API 上发布一些内容。 在您的 django 应用程序中创建一个名为 management 的文件夹...
    编程 发布于2024-11-08
  • 引导实用程序
    引导实用程序
    Bootstrap 实用程序是一组功能强大的类,可以让您的网站样式设置更轻松、更快捷,而无需编写自定义 CSS。让我们深入了解基础知识! 什么是 Bootstrap 实用程序? Bootstrap 实用程序是预定义的 CSS 类,您可以将它们直接应用于 HTML 元素以控制其外观或行为。这些实用程序...
    编程 发布于2024-11-07
  • 修复下拉菜单/工具提示等隐藏的溢出
    修复下拉菜单/工具提示等隐藏的溢出
    您是否曾尝试为您的按钮创建一个下拉列表,然后选择但随后被溢出隐藏阻止? 然后你该怎么做,然后你使用javascript将元素扔到DOM的根目录,然后根据触发元素矩形定位元素,每次布局更改时重新计算,发生滚动和调整窗口大小,不是很有效的。 首先我想说的是它还没有完全支持,但是现在有一个polyfill...
    编程 发布于2024-11-07
  • 如何使用中间件方法有效处理 Gin Web 应用程序中的错误?
    如何使用中间件方法有效处理 Gin Web 应用程序中的错误?
    增强 Gin 中的错误处理Gin 的自定义错误处理涉及使用中间件来处理错误响应。这允许错误逻辑与正常流程逻辑分离。错误处理中间件type appError struct { Code int Message string } func JSONAppErrorReporter(...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3