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

在将一个加密的算法从 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字符。选择哪种方式取决于你的具体需求和代码风格偏好。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!