You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中对应Python bytes()/bytearray()的等价实现方法

Go 实现 Python bytes() 整数列表转字节对象的等价方案

实现原理

Python 中对 0-255 范围的整数列表调用 bytes(),本质是按顺序将每个整数映射为对应值的单字节,拼接为连续字节序列。Go 中 byte 是 uint8 的类型别名,取值范围正好匹配 0-255,直接构造 []byte 切片即可得到完全等价的字节对象。

直接实现代码

如果输入的整数值都在0-255范围内,可以直接声明为[]byte类型:

package main

import "fmt"

func main() {
	// 对应Python中的待转换整数列表
	toConvert := []byte{3, 40, 234, 1, 23, 65, 43, 72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100}
	// toConvert 就是和Python中converted完全等价的字节对象,底层字节序列完全一致

	// 如果需要打印验证,用%#v可以输出Go语法格式的字节切片表示
	fmt.Printf("%#v\n", toConvert)
}

输入为[]int类型时的转换方法

如果初始输入是[]int类型的整数切片,遍历逐个转换类型即可:

intList := []int{3, 40, 234, 1, 23, 65, 43, 72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100}
converted := make([]byte, len(intList))
for idx, val := range intList {
	converted[idx] = byte(val)
}

结果一致性说明

上述代码生成的[]byte对象,底层字节序列和Python输出的b'\x03(\xea\x01\x17A+Hello world'完全一致:

  • 可打印ASCII字符部分((、A、+、Hello world)对应字节值和Python结果完全匹配
  • 非打印、非ASCII字节(0x03、0xea等)的取值和顺序也和Python结果完全相同
  • 两者可以直接用于网络传输、文件写入、哈希计算等场景,输出结果没有任何差异

内容的提问来源于stack exchange,提问作者Konik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.14 16:15:48