- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如果我必须处理以字节形式存储的值,例如 0x118,我该如何拆分 LSB 和 MSB?
我正在尝试以下方式......我不认为这是正确的方式:
value = 0x118;
以字节为单位存储...
result[5] = (byte) value;
result[6] = (byte)(value << 8);
...
正确的做法是什么?
最佳答案
这样做就可以了:
result[5] = (byte) (value & 0xFF); // Least significant "byte"
result[6] = (byte) ((value & 0xFF00) >> 8); // Most significant "byte"
我通常使用位掩码——也许不需要它们。第一行选择低八位,第二行选择高八位并将这些位向右移动八位。这等于除以 28。
这就是背后的“诡计”:
(I) LSB
01010101 10101010 // Input
& 00000000 11111111 // First mask, 0x00FF
-----------------
00000000 10101010 // Result - now cast to byte
(II) MSB
01010101 10101010 // Input
& 11111111 00000000 // Second mask, 0xFF00
-----------------
01010101 00000000 // Result -
>>>>>>>> // "Shift" operation, eight positions to the right
-----------------
00000000 01010101 // Result - now cast to byte
总结一下,做以下计算:
byte msb = result[6];
byte lsb = result[5];
int result = (msb << 8) + lsb; // Shift the MSB bits eight positions to the left.
关于java - Java 中的 LSB/MSB 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5167079/
如何在c#中用另一个字节的LSB替换一个字节的LSB。 类似这样的 字节1 - 0 1 1 1 1 1 1 1 字节2 - 0 0 1 1 1 0 0 0 现在我希望将 byte1 的 lsb(即“1
我希望将 LSB、MSB 的字节数组转换为 int 的数组 目前,我正在使用 for 循环并单独转换每组值, void ConvertToInt(int OutArray[], byte InArra
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我想分配一个 std_logic_vector 而不给出界限。像这样: constant xy: std_logic_vector := "100111"; 当我想访问单个位时: xy(0), xy(
我检查了用于反转位顺序的 SWAR 算法(SIMD W在 A Rregister 中) unsigned int 的。 signed int 有类似的东西吗? 最佳答案 该算法仅适用于无符号整数,因为
当您使用 LSB 隐写术加密图像时,它会改变一些像素。我的问题是,如果说您使用 ffmpeg 在视频中输入该图像并重新编码视频加上图像,像素是否仍会被更改并且能够被解密? 最佳答案 这取决于编码期间使
我正在尝试更改数值的 LSB,例如 50,其中 LSB 为 0,因为 50 % 2 为 0(余数运算符),值为 1。因此,在这种情况下,将 LSB 从 0 更改为 1。代码如下: //Get the
我正在尝试实现一个简单的编码程序,可以在图像像素的 LSB 中隐藏消息。到目前为止,我已经从消息中获取了字节数组 private static byte[] ConvertMessageToB
当你和一些带有掩码的数据时,你会得到一些与数据/掩码大小相同的结果。我想要做的是获取结果中的掩码位(掩码中有 1)并将它们向右移动,以便它们彼此相邻,我可以对它们执行 CTZ(计数尾随零) . 我不知
我正在尝试实现一种基本的速记技术,其中我用消息图像的 MSB 替换载体图像的 LSB。 LSB 可以属于任何 RGB channel 。 我的方法非常幼稚,因为我正在循环 message_matrix
我尝试在 C 中这样做: int val = 0xCAFE; int uc = val & 14; if (val & 15 == 15 || val & 7 == 7 || val & 11
更新************************作为引用,我包含了用于打开 PPM 图像的程序 - 将消息嵌入到图像中,然后保存带有嵌入文本的新图像。通过下面的函数,我希望额外添加该消息(隐藏在
我只是想知道是否有人可以帮助我设置/清除音频样本的 LSB 下面的代码遍历一个包含 24 个元素的数组,每个元素都添加到文件中,并在后面添加一个新行。 FILE *fp; fp = fopen(Emb
我知道使用 LSB 意味着您可以将消息存储在图像载体大小的 12% 左右。 我制作了一个 java 程序,它将一条消息分成 n 个片段,并用这些片段填充图像载体,直到 12% 都被占用。我这样做是为了
我有一个来自 GTK/glib 2 的 GSList,它们只存储完整的指针,我真的不想要额外的分配。我如何进行位操作以在这些指针中存储额外数据? 我想我不能只拿一个指针然后做 tagged_ptr =
我在网上读到了LSB插入,但它只介绍了如何向LSB插入位,但没有描述如何提取位。这是我读过的关于LSB insertion的文章. 我理解他们下面使用的方法,但是如何提取这些位? 最佳答案 这是获取加
我有一个函数返回 1 Byte uint8_t fun(); 该函数应该运行 9 次,所以我得到 9 字节 我想将最后一个 8 作为 4 short values 这里我所做的,但是我'我不确定我得到
我的程序从硬件设备接收一个字节类型的日期时间数据包。一个示例数据包是: byte[] packet = new byte[] {0x0C, 0x01, 0x15}; //packet[0] is th
我很难理解 LSB based steganography第 2 节中给出的方法。互联网上的示例非常困惑和不清楚。我正在关注 Matlab 实现 https://www.mathworks.com/m
我有一个二进制文件,我需要了解它并修改它的行为,但我以前从未在 Linux 上重写过某些东西,只是在 Windows 上重写过。有人可以向我推荐一种方法/程序来查看此二进制文件的 ASM、跟踪其运行时
我是一名优秀的程序员,十分优秀!