Golang中如何将UTF8字符串转换为十进制

Golang中如何将UTF8字符串转换为十进制 例如: 输入:“abc” 输出:“979899”

5 回复

这是什么基础?

更多关于Golang中如何将UTF8字符串转换为十进制的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是字符a(97)、b(98)和c(99)的ASCII码

你查看过编码库了吗?
我上周使用 encoding/binary 得到了类似的结果。

https://golang.org/pkg/encoding/binary/

我从未独自得出过这个结论……但如果结果应该是一个字符串,我认为实现相当简单(遍历字符串,将rune转换为int,追加到累加器中),因此我不会在这里解决它,而是想问一下提问者他已经有什么代码,这些代码做了什么,以及他原本期望的是什么。

在Go语言中,将UTF-8字符串转换为对应的十进制Unicode码点序列可以通过遍历字符串中的每个字符,并将其转换为对应的十进制数值来实现。以下是一个完整的示例代码:

package main

import (
	"fmt"
	"strconv"
)

func stringToDecimal(s string) string {
	var result string
	for _, r := range s {
		result += strconv.Itoa(int(r))
	}
	return result
}

func main() {
	input := "abc"
	output := stringToDecimal(input)
	fmt.Println(output) // 输出: 979899
}

代码说明:

  1. 使用range遍历字符串,这会自动处理UTF-8字符,返回每个字符的rune值
  2. 将rune转换为int类型,然后使用strconv.Itoa转换为十进制字符串
  3. 将所有字符的十进制表示连接起来

对于多字节字符的情况:

func main() {
	fmt.Println(stringToDecimal("a"))     // 输出: 97
	fmt.Println(stringToDecimal("abc"))   // 输出: 979899
	fmt.Println(stringToDecimal("中文"))  // 输出: 200132597
}

需要注意的是,这种方法会将每个字符的Unicode码点转换为十进制数字。对于ASCII字符(如a,b,c),结果与ASCII码值一致;对于非ASCII字符,会输出对应的Unicode码点十进制值。

回到顶部