【发布时间】:2018-08-06 22:49:07
【问题描述】:
假设我有一个[]byte,为了让我的生活更轻松,我想通过以下方式将其转换为[]int 或[]bool:
假设我以[]byte{0x41} 开头,即0b01000001。现在,我想获得的是这样的:
[]int{0,1,0,0,0,0,0,1}
或
[]bool{f,t,f,f,f,f,f,t}
我想我可以这样循环:
mybyte & (1 << pos)
但我一直在寻找更紧凑的方法。
【问题讨论】:
-
那么问题是什么?如果您正在寻找一些神奇的功能或语法糖:停止寻找,没有。编写循环和班次。如果您正在寻找为您执行此操作的软件包:停止查看 SO。
-
多么好的评论......因为我对这门语言相当陌生,而且我知道
strconv.FormatInt( a []byte turned into int , 2)会返回一个带有二进制表示的字符串作为字符串,我只是在寻找类似的,更紧凑的方法。谢谢你,@Volker,保重。 -
将
[]byte转换为[]bool的目的是什么?您希望能够测试单个位吗? -
[]byte 是一组线圈(即:单个位)的 modbus 读取的输出。通过将它们表示为 []int 或 []bool,我可以更好地“解释”我对这些位所做的事情,而不是一直在做轮班。从某种意义上说:对于最终用户和开发人员来说,它更清晰。
标签: go type-conversion slice bit