go - 如何将单个字符转换为单个字节?

标签 go byte

我正在尝试检查给定字符是否存在于字节中:

//readBuf: []byte
//n: int
for i:=0;i<n;i++{
    if readBuf[i]=="?"{
        return true
    }
}

“?”是字符串类型,所以我收到错误,因为 readBuf[i] 是一个字节。我怎样才能转换“?”到一个字节以便能够将其与 readBuf[i] 进行比较?

似乎 []byte("?")[0] 正在工作(将 1 元素字符串转换为 1 元素字节数组,提取第一个值),但我确信这不是正确的方法这样做。

最佳答案

rune literal '?' 是问号 rune 的无类型整数值。

使用bytes.ContainsRune :

if bytes.ContainsRune(readBuf[:n], '?') {
   return true
}

因为字符?在UTF-8中被编码为单个字节,所以测试也可以写成:

for _, b := range readBuf[:n] {
    if b =='?'{   
        return true
    }
}

关于go - 如何将单个字符转换为单个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292602/

相关文章:

java - 如何将 char 值传递给 int 参数的方法

go - 在实现相同接口(interface)的多个结构上定义方法

go - 使用 mgo 错误插入 ISODate 字段

c++ - 结构中的字段跳过字节

python - 将十六进制字符串转换为字节数组

tcp - 有人能告诉我 golang 中 io.ReadFull 和 bytes.Buffer.ReadFrom 的行为是什么吗

java - 为什么两个字节的异或运算符会产生 int?

go - Go 中如何将字节数组转换为字符串数组?

linux - 获取文件的uid和gid

go - 有没有更好的方法来列出属于特定 K8s 对象的 K8s 事件?