Golang Go语言中如何将数字转换为ASCII码?
在将一个加密的算法从 php 翻译到 go ,最后发现数字转换为 ascii 的时候,两个语言不一致, php 用的 chr(int), go 是直接用的 string(int),求教正确的姿势
Golang Go语言中如何将数字转换为ASCII码?
姿势应该是正确的,倒是可以关注下这个 int 是不是超过 128
更多关于Golang Go语言中如何将数字转换为ASCII码?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
就是超过 128 的就不正确了
[]byte(strconv.Itoa(int))
string([]rune{rune(i % 256)})
char --> int rune(‘a’)
int --> char string([]byte{97})
golang 的 string 使用的是 utf8 编码
没有 char 这个类型,'a’和’你’的类型都是 int32 ,和 rune 一样。
string 也不是 char ,这里根本就不应该出现[]byte 。 rune 到 string 只需要 string([]rune{97, 30000})这样。
看文档, PHP 的 chr 是要先取模的
恩,明白。 golang 里的确没有 char 这个类型,楼主的意思应该字符和 int 的转换, python 里面对应的是 chr 和 ord , golang 里面就是 rune 和 string 。
在Golang(Go语言)中,将数字转换为ASCII码实际上是指将整数值转换为对应的ASCII字符。Go语言提供了内置函数可以轻松完成这一操作。具体来说,你可以使用string
包中的rune
类型或者直接进行类型转换来达到目的。
以下是两种常见的方法:
-
使用
rune
类型:rune
是Go语言中的一个别名,用于表示Unicode码点(即ASCII码在Unicode中的扩展)。你可以直接将一个整数转换为rune
,然后将其转换为字符串,从而得到对应的ASCII字符。package main import "fmt" func main() { num := 65 // ASCII码 for 'A' char := rune(num) fmt.Println(string(char)) // 输出: A }
-
直接类型转换: 虽然
rune
是推荐的方式,但你也可以直接将整数类型转换为byte
(byte
在Go中是uint8
的别名),然后转换为字符串。这在处理纯ASCII字符时尤其有效。package main import "fmt" func main() { num := 65 // ASCII码 for 'A' char := byte(num) fmt.Println(string(char)) // 输出: A }
这两种方法都能正确地将整数转换为对应的ASCII字符。选择哪种方式取决于你的具体需求和代码风格偏好。