如何将字符串转换为 ASCII 数值切片(Go 语言实现)
发布时间 - 2025-12-26 00:00:00 点击率:次在 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]
}⚠️ 注意事项:
- 此方法仅适用于 ASCII 字符串(即所有字符编码 ≤ 127)。若输入含中文、emoji 等 Unicode 字符,s[i] 将返回 UTF-8 编码的单个字节(非完整码点),结果不等于 Unicode 值。如需处理任意 Unicode 字符,请改用 for _, r := range s 遍历 rune(见进阶提示)。
- 若你确实需要 C 风格的固定大小数组(如 [18]int),Go 允许声明,但无法动态初始化;通常应优先使用切片([]int),它底层引用数组,兼具灵活性与性能。
- 在你的密码学项目中,若后续需对 ASCII 值做运算(如 s[i] - 96),可直接在循环内完成:ascii[i] = int(s[i]) - 96(注意边界检查,避免负数或越界)。
总结:Go 的 string 是只读字节序列,s[i] 安全获取 ASCII 值;用 make([]int, len(s)) 配合索引赋值,即可高效构建 ASCII 数值切片——简洁、清晰,且完全契合你从 C 迁移的学习路径。
# go
# 编码
# 字节
# ai
# overflow
# String
# for
# 字符串
# 强制类型转换
# int
# 循环
# 切片
# len
# 类型转换
# ASCII
# 的是
# 遍历
# 适用于
# 可直接
# 是一个
# 进阶
# 要将
# 而非
# 如需
# 可通过
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何基于云服务器快速搭建个人网站?
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
Laravel用户密码怎么加密_Laravel Hash门面使用教程
javascript日期怎么处理_如何格式化输出
Linux系统命令中screen命令详解
Laravel storage目录权限问题_Laravel文件写入权限设置
lovemo网页版地址 lovemo官网手机登录
深圳网站制作培训,深圳哪些招聘网站比较好?
如何实现建站之星域名转发设置?
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel如何为API生成Swagger或OpenAPI文档
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何在阿里云部署织梦网站?
如何在新浪SAE免费搭建个人博客?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
想要更高端的建设网站,这些原则一定要坚持!
如何在万网主机上快速搭建网站?
如何在IIS管理器中快速创建并配置网站?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Python制作简易注册登录系统
详解Huffman编码算法之Java实现
Python3.6正式版新特性预览
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
晋江文学城电脑版官网 晋江文学城网页版直接进入
百度浏览器如何管理插件 百度浏览器插件管理方法
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
如何自定义建站之星网站的导航菜单样式?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
南京网站制作费用,南京远驱官方网站?
Android中AutoCompleteTextView自动提示
如何获取免费开源的自助建站系统源码?
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Laravel Fortify是什么,和Jetstream有什么关系
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何基于云服务器快速搭建网站及云盘系统?
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
JS去除重复并统计数量的实现方法
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤


节数
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]
}