我必须将hex
,以string
s 表示(例如"0xC40C5253"
)转换为浮点值( IEEE-754
转换)。我没有使用strconv.ParseFloat函数做到这一点。还有什么我要用的吗?到目前为止我找不到。我也尝试先将其转换为整数,然后转换为浮点数,但结果是错误的。
我最后一次尝试的代码:
package main
import (
"fmt"
"strconv"
)
func main () {
x, err := strconv.ParseInt("C40C5253", 16, 64)
f, err := strconv.ParseFloat(fmt.Sprintf("%d", x), 64)
if err != nil {
fmt.Printf("Error in conversion: %s\n", err)
} else {
fmt.Println(f)
}
}
首先,需要说明输入的位长。由于十六进制表示形式有4个字节(8个十六进制数字),因此很可能是a float32
(需要询问者澄清)。
您可以将十六进制表示形式的字节解析为uint32
using
strconv.ParseUint()
。ParseUint()
总是返回uint64
占用8个字节的内存,因此您必须将其转换为占用uint32
4个字节的内存,如下所示float32
:
s := "C40C5253"
n, err := strconv.ParseUint(s, 16, 32)
if err != nil {
panic(err)
}
n2 = uint32(n)
现在您有了字节,但是它们存储在类型的变量中uint32
,因此被解释为整数的字节。而且您想将它们解释为IEEE-754浮点数的字节,可以使用该unsafe
包来做到这一点:
f := *(*float32)(unsafe.Pointer(&n2))
fmt.Println(f)
输出(在Go Playground上尝试):
-561.2863
注意:
正如JimB所指出的那样,对于第二部分(转换uint32
为float32
),math
程序包具有内置功能math.Float32frombits()
,该功能可以在后台执行此操作:
f := math.Float32frombits(n2)
问题内容: 如何在Python中将以下十六进制字符串转换为float(单精度32位)? 问题答案: 在 Python 3中 : 在 Python 2中 :
本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只
本文向大家介绍如何将十进制转换为十六进制?,包括了如何将十进制转换为十六进制?的使用技巧和注意事项,需要的朋友参考一下 十进制是公众最熟悉的数字系统。它是基数10,只有10个符号-0、1、2、3、4、5、6、7、8和9。而十六进制是计算机或数字系统中最常见的数字系统颜色表示。它是基数16,只有16个符号:0、1、2、3、4、5、6、7、8、9和A,B,C,D,E,F。这些A,B,C,D ,E,F分
我正在尝试将十六进制数据添加到十六进制字符串中,我需要使用它们的IEEE表示将浮点数添加到该字符串中。对于整数,这很简单: 其中value是数字的VARCHAR,params是包含十六进制字符串的VARCHAR。这个技巧适用于整数,但对于十进制,它会截断十进制部分,并将整数部分转换为十六进制整数。如果十进制的大小是固定的(java float或double),如何将值转换为十进制数的IEEE浮点表
我需要处理一个十六进制字符串值到浮动颜色。 真正的颜色是(RGBA格式) 是绿色的,当0相当于00,1是FF。但是需要将颜色转换为0-255十进制数来计算从0到255的百分比,并设置浮点值。 如何通过示例转换为浮点数组? 当parsecolor i有整数值时: 但是如何将整数转换为浮点中的每种颜色呢?红、绿、蓝、阿尔法
问题内容: 如何将十六进制字符串转换为base64?我发现此页面http://home2.paulschou.net/tools/xlate/,但是我需要Java中的某些功能:我在Internet上找到了一些东西,但是它们很难使用字节数组。我正在寻找一些更简单的东西 问题答案: 看看Commons Codec: