R 如何从像素中提取位字段

R 如何从像素中提取位字段,r,byte,pixel,bit,R,Byte,Pixel,Bit,我有一张卫星图像,像素值在0到255之间。此图像包含对48位产品中的信息否/是(0/1)存储的多项测试。我需要得到一个像素的测试信息;具体来说,我需要获取位(19)的信息 我可以假设,对于值为0的像素,所有测试的信息都是No(0);但是,对于值大于0的像素,情况并非如此。我可以提取像素值,但如何从R中的像素提取位字段信息呢 当然你也看到过类似的东西,你能指导我在R中这样做吗 我使用了intToBits(),但它只返回32位,我不确定这是否是正确答案。这个问题可能有用: 然而,请注意,这将返回一个

我有一张卫星图像,像素值在0到255之间。此图像包含对48位产品中的信息否/是(0/1)存储的多项测试。我需要得到一个像素的测试信息;具体来说,我需要获取位(19)的信息

我可以假设,对于值为0的像素,所有测试的信息都是No(0);但是,对于值大于0的像素,情况并非如此。我可以提取像素值,但如何从R中的像素提取位字段信息呢

当然你也看到过类似的东西,你能指导我在R中这样做吗


我使用了intToBits(),但它只返回32位,我不确定这是否是正确答案。

这个问题可能有用:

然而,请注意,这将返回一个二进制表示的字符串。在这种情况下,您可以使用字符串操作访问第19个插槽:

substr(your_bits48, start = 19, stop = 19)

[1] "0" "0" "0" "0" "1"
然后需要使用
as.numeric
as.integer
将其强制为一个数字。但是,这是从数字的开头开始计数,而不是从结尾开始计数,因此您确实需要在
(64:1)[19]
或46处
开始=
停止=

大概您需要的数据不仅仅是第19个值,因此您还可以使用
strsplit(您的_bits48,”)
将位字符串拆分为每个值,然后可以以任何方式对其进行索引

library(bit64)
your_pixels48 <- c(0, 1, 100, 255, 2^48-1)

[1] 0.00000e+00 1.00000e+00 1.00000e+02 2.55000e+02 2.81475e+14



your_pixels48 <- as.integer64(your_pixels48)

integer64
[1] 0               1               100             255             281474976710655



your_bits48 <- as.bitstring(your_pixels48)

[1] "0000000000000000000000000000000000000000000000000000000000000000"
[2] "0000000000000000000000000000000000000000000000000000000000000001"
[3] "0000000000000000000000000000000000000000000000000000000001100100"
[4] "0000000000000000000000000000000000000000000000000000000011111111"
[5] "0000000000000000111111111111111111111111111111111111111111111111"

substr(your_bits48, start = 19, stop = 19)

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