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

时间:2017-09-19 05:37:51

标签: 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元素字节数组,提取第一个值),但我确信这不是正确的方法这样做。

1 个答案:

答案 0 :(得分:3)

here. '?'是问号符号的无类型整数值。

使用rune literal

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

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

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