string - 尝试将 byte slice 解析为 Golang 中的 16 进制数

标签 string go

我正在尝试将具有以下值 020000 的 byte slice 段解析为以 16 为基数的数字,但尚未使其正常工作。我做错了什么?

package main

import (
    "fmt"
    "strconv"
)

func main() {
    input := []byte{0, 2, 0, 0, 0, 0}
    expectation := 131072

    actual := headerVersion(input)

    if actual != expectation {
        panic(fmt.Sprintf("Expected %v but got %v.", expectation, actual))
    }
}

func headerVersion(input []byte) int {
    output, _ := strconv.ParseUint(string(input), 16, 64)
    return int(output)
}

https://play.golang.org/p/eM5RQAJdoL

最佳答案

你有一个原始字节 slice ,它是组成你想要的数字的字节,但你将它解析为好像它是组成你想要的数字的字节的字符串表示的字节。与其尝试解析为字符串,不如解析为字节。您可以使用 binary package 执行此操作,根据其文档:

implements simple translation between numbers and byte sequences and encoding and decoding of varints.

这正是您想要的。您如何使用它取决于数据的字节序和编码,但文档应该让您朝着正确的方向前进。

关于string - 尝试将 byte slice 解析为 Golang 中的 16 进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47016103/

相关文章:

git - 如何在另一个私有(private) Go 项目(作为模块)中导入私有(private) Go 库(作为模块)

linux - ldconfig 注册.so lib

go - 如何使用golang获取xen服务器内存、磁盘、网络和CPU信息?

c# - 检查并返回字符串列表中的关键字

c# - 在 Python 中解密使用 .NET 加密的字符串

java - JSON 字符串以及如何处理转义字符

go - 长时间运行的 cgo 函数调用超时

c - 使用指针在函数中创建一个新字符串

Lua 中的字符串操作 : Swap characters in a string

Golang WaitGroup 超时错误处理