arrays - 将某些内容转换为字节
问题描述
我想使用我找到的以下代码将一个变量(我在这个例子中使用一个 int)转换为一个字节:
func IntToByteArray(num int64) []byte {
size := int(unsafe.Sizeof(num))
arr := make([]byte, size)
for i := 0 ; i < size ; i++ {
byt := *(*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer(&num)) + uintptr(i)))
arr[i] = byte(byt)
}
return arr
}
func main(){
println(IntToByteArray(1456))
}
但是它给我的输出是这个:[8/8]0xc00001a0d0 有人可以解释一下为什么我有这个结果吗?究竟什么是字节数组?
解决方案
package main
import "fmt"
func IntToByteArray(num int64) []byte {
r := make([]byte, 8)
for i := 0; i < len(r); i++ {
r[i] = byte(num >> (i * 8) & 255)
}
return r
}
func main() {
fmt.Println(IntToByteArray(65280))
}
这假设了小端序。
正如其他人所建议的那样,包含的软件包更加灵活且经过测试。
推荐阅读
- google-sheets - 将 ImportRange 与 Query 函数一起使用时缺少一些数据
- angular-material - 使用 ngrx 和 trackby 更新 Angular Material Table 数据和列不会刷新 DOM
- sql - 如何在sql server中将名称划分为行?
- excel - 错误转到它不适用于 Excel VBA
- reactjs - 我们可以为每个选择器(即使是最简单的 getter)使用带有 redux 的 Reselect memoization 吗?
- r - 软件R中一张图中三个图的最大值
- node.js - 发送电子邮件的最正确方式是什么?
- aws-sdk-js - 将 WriteRecordsCommand 发送到 TimestreamWriteClient 时出现 UnknownOperationException
- reactjs - 编译错误:已定义但从未使用 no-unused-vars
- javascript - 如何让 div [box] 响应其中的文本