gpt4 book ai didi

go - 将`byte`数组转换为`uint32`数组

转载 作者:行者123 更新时间:2023-12-01 22:44:17 25 4
gpt4 key购买 nike

我想使用byte数组作为uint32数组,然后获取uint32数组的第一个元素。但是我无法使以下代码正常工作。有人可以让我知道如何将byte数组转换为unit32数组吗?谢谢。

// vim: set noexpandtab tabstop=2:

package main

import (
"unsafe"
"fmt"
)

func main() {
x := []byte{'\x01', '\x02', '\x03', '\x04', '\x06', '\x07', '\x08', '\x09'}
fmt.Printf("%#v\n", x)
fmt.Printf("%#v\n", []int32(unsafe.Pointer(x))[0])
}

最佳答案

这将是

fmt.Printf("%#v\n", (*(*[]int32)(unsafe.Pointer(&x)))[0])
但请记住,它仍然会带有 len = cap = 8(*),并仔细检查边界本身。
表达澄清
unsafe.Pointer(&x) // an uintptr to an `x` slice

(*[]int32)(...) // a type conversion
// it's the same syntax when you do float64(42)
// but in this case you need extra parentheses around the
// type name to make it unambiguous for the parser
// so, it converts a unitptr to a pointer to a int32 slice

*(...) // here it's just a pointer dereference. So you obtain a slice
// from a pointer to a slice, to index it after
(*)在这种特殊情况下, cap不能保证是 8(但并不重要)。

关于go - 将`byte`数组转换为`uint32`数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62506561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com