我需要创建一个由对应于最多 255 的整数的单个字节组成的字符串。该字符串不是有效的 Unicode 是可以接受的。
代码:
import (
"fmt"
"strings"
)
func main() {
n := 255
s := ""
s += string(byte(n))
fmt.Printf("Method 1: %x\n", s)
sb := strings.Builder{}
sb.WriteByte(byte(n))
fmt.Printf("Method 2: %x\n", sb.String())
}
输出:
Method 1: c3bf
Method 2: ff
在第一种方法中,Go 将
ÿ
附加到字符串,因为 255 是这个 Unicode 字符的代码点。
在第二种方法中,Go 将
0xff
(255) 字节附加到字符串中。这是期望的结果,但是有没有更简单的方法来完成此任务,而不需要导入 strings
包?为什么 Go 在第一个方法中将字节解释为 Unicode 代码点?
在第一种方法中,您将字节转换为字符串,该字符串首先将该字节解释为 unicode 代码点。
https://go.dev/ref/spec#Conversions
您始终可以将字符串转换为字节,添加一个字节,然后将其转换回字符串:
str := string(append([]byte(sourceStr), byteValue))