在 go 中,可通过遍历字符串字节并强制类型转换,将字符串高效转为 ascii 值组成的 int 切片;注意 go 字符串底层是 utf-8 字节数组,直接索引 `s[i]` 获取的是字节(byte),适用于 ascii 字符场景。
Go 语言中没有 C 风格的固定长度数组语法(如 int arr[18]),但提供了更灵活、安全的动态切片(slice)——这正是实际项目中更推荐的选择。要将字符串 "Hi Stack OverFlow" 转换为对应的 ASCII 数值序列(如 [72, 105, 32, ...]),关键在于理解:Go 字符串不可变,且 s[i] 返回的是第 i 个字节(byte 类型),而非 Unicode
码点。对于纯 ASCII 字符(即单字节 UTF-8 编码),byte 值即其 ASCII 码,可直接转为 int。
以下是一个简洁、无额外依赖的实现:
package main
import "fmt"
func StringToASCII(s string) []int {
ascii := make([]int, len(s)) // 预分配切片,长度等于字符串字节数
for i := range s {
ascii[i] = int(s[i]) // s[i] 是 byte,转为 int 即得 ASCII 值
}
return ascii
}
func main() {
text := "Hi Stack OverFlow"
result := StringToASCII(text)
fmt.Println(result)
// 输出: [72 105 32 83 116 97 99 107 32 79 118 101 114 70 108 111 119]
}⚠️ 注意事项:
总结:Go 的 string 是只读字节序列,s[i] 安全获取 ASCII 值;用 make([]int, len(s)) 配合索引赋值,即可高效构建 ASCII 数值切片——简洁、清晰,且完全契合你从 C 迁移的学习路径。