当前位置: 首页 > 面试题库 >

从字节片提取位到int片中

吴建中
2023-03-14
问题内容

我有以下字节片,我需要从中提取位并将它们放置在[] int中,因为我打算稍后再获取各个位值。我很难弄清楚该怎么做。

下面是我的代码

data := []byte{3 255}//binary representation is for 3 and 255 is 00000011 11111111

我需要的是一点点-> [0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1]

我试过了

  • 我尝试使用BigEndian将字节片转换为Uint16,然后尝试使用,strconv.FormatUint但由于错误而失败panic: runtime error: index out of range
  • 看到了很多示例,这些示例使用fmt.Printf函数来简单地输出数字的位表示形式,但这对我没有用,因为我需要一个int切片来进一步访问位值。

我需要在这里使用移位运算符吗?任何帮助将不胜感激。


问题答案:

一种方法是遍历字节,并使用第二次循环逐位移位字节值,并使用位掩码测试位。并将结果添加到输出切片。

这是它的实现:

func bits(bs []byte) []int {
    r := make([]int, len(bs)*8)
    for i, b := range bs {
        for j := 0; j < 8; j++ {
            r[i*8+j] = int(b >> uint(7-j) & 0x01)
        }
    }
    return r
}

测试它:

fmt.Println(bits([]byte{3, 255}))

输出(在Go Playground上尝试):

[0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1]


 类似资料:
  • 我试图使用OpenCV和Java实现一些图像处理,从图像中提取一张卡片。 以下是我的做法: 转换为BGR图像 转换为灰度图像 应用高斯模糊 应用Canny边缘检测 扩张 查找等高线 查找最大轮廓 使用approxpolydp查找最大轮廓的角 沿最大轮廓获取裁剪图像的自上而下视图 代码如下: 寻求帮助在获得适当的角顶点...提前感谢…

  • 比方说,我有一个字节数组,包含没有标题的原始位图数据。 但是位图数据有点奇怪,我不太确定,但是如果宽度是NPOT(不是二次方),位图数据似乎没有正确对齐 我使用以下代码从此类位图数据构造bmp: 到目前为止,代码运行良好。但由于某些原因,我需要实现“导入位图”,这意味着我需要从位图实例中获取“奇怪”的位图数据。 我该怎么做?

  • 问题内容: 因此,如果我有输入的整数: 我如何解析数字并获得1、2和8,并将它们分配给不同的变量? 谢谢! 问题答案: 这样做的低效方法是将整数转换为字符串,然后迭代字符串字符。 更有效的方法是:

  • 似乎有很多与这个主题相关的问题。当我阅读大部分时,我有一个问题。通常人们试图制作一个片段,然后从那里生成一个对话片段。所以对话片段在片段中。 在我的例子中,我创建了一个按钮,用于打开工具栏上的dialogfragment。然后我从导航栏打开我的主要片段。因此dialogfragment和我的主片段通过相同的主活动被调用,只是在不同的地方。我无法从片段内部调用对话框片段,因为它在选择菜单选项时被调用

  • 本文向大家介绍tensorflow从张量中提取一个切片,包括了tensorflow从张量中提取一个切片的使用技巧和注意事项,需要的朋友参考一下 示例 请参阅文档以获取详细信息。tf.slice(input, begin, size) 参数: input:张量 begin:每个维度的起始位置 input size:的每个维度的元素数input,使用-1包括所有剩余元素 块状切片: 使用负索引,检索第

  •        LSV还支持批量快速地将照片的GPS提取,在“数据处理”菜单里点击“照片GPS提取”即可打开该功能,在弹出的窗口中选择照片所在文件夹以及其存储目录。        之后即可对所得到的文件通过Excel打开对照片GPS信息以及路径进行查看,如下图所示: