Golang Go语言中如何将数字转换为ASCII码?

发布于 1周前 作者 htzhanglong 来自 Go语言

在将一个加密的算法从 php 翻译到 go ,最后发现数字转换为 ascii 的时候,两个语言不一致, php 用的 chr(int), go 是直接用的 string(int),求教正确的姿势
Golang Go语言中如何将数字转换为ASCII码?

10 回复

姿势应该是正确的,倒是可以关注下这个 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类型或者直接进行类型转换来达到目的。

以下是两种常见的方法:

  1. 使用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
    }
    
  2. 直接类型转换: 虽然rune是推荐的方式,但你也可以直接将整数类型转换为bytebyte在Go中是uint8的别名),然后转换为字符串。这在处理纯ASCII字符时尤其有效。

    package main
    
    import "fmt"
    
    func main() {
        num := 65 // ASCII码 for 'A'
        char := byte(num)
        fmt.Println(string(char)) // 输出: A
    }
    

这两种方法都能正确地将整数转换为对应的ASCII字符。选择哪种方式取决于你的具体需求和代码风格偏好。

回到顶部