gpt4 book ai didi

java - 我们在哪里使用 BitSet 以及为什么在 java 中使用它?

转载 作者:行者123 更新时间:2023-12-03 09:08:55 24 4
gpt4 key购买 nike

我刚刚发现java中有BitSet。已经有数组和类似的数据结构。 BitSet可以用在什么地方?

最佳答案

由于上述答案仅解释了 BitSet 是什么,因此我在此提供有关如何使用 BitSet 以及原因的答案。起初,我不知道 BitSet 构造的存在。我有一个 C++ 中的 QR 码生成器,出于灵活的原因,我不想使用特定的位图结构来将此 QR 码返回给调用者。 QR 码只是黑白的,可以表示为一系列位。问题是在 JNI C++ 中,我必须返回表示这些位系列的字节数组,然后必须返回位的计数。请注意,仅字节数组的大小无法说明位数。实际上,我面临着这样一种情况:我的 JNI C++ 必须返回两个值:

  • 字节[]数组
  • 位数

我的第一个解决方案是返回一个 boolean 值数组。该数组的内容是二维码像素,数组长度的平方根是边长。当然这有效,但我觉得浪费了,因为它应该是一系列的位。我的下一次尝试是返回 Pair<int, byte[]>对象,经过大量的拉扯,我无法让它在 C++ 中工作。这里来了BitSet(145)构造。通过返回此 BitSet对象,我正在传达上面列出的两种类型的信息。 但是有一个小技巧。如果QR Code像素总共有144个像素,因为一侧是12,那么你必须分配BitSet(145)并做obj.set(144) 。也就是说,我们引入了一个人工的最后一位,然后进行设置,但这最后一位不是 QR 码像素的一部分。这确保了,BitSet::length()正确返回位数。所以在 Kotlin 中:

var pixels:BitSet = getqrpixels(inputdata)
var pixels_len = pixels.length() - 1
var side = sqrt(pixels_len.toFloat()).toInt()
drawSquareBitmap(pixels, side)

这就是我对这个神秘的 BitSet 的意外用例。

关于java - 我们在哪里使用 BitSet 以及为什么在 java 中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44477173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com