我有一个字节A和字节B.我正在寻找字节C,它是来自A的每隔一个位和来自B的每一个其他位。所以如果A = 10011010并且B = 01110010,那么C将是10110101其中1011是来自A的其他位,0101是来自B的每隔一位。任何人都可以帮助我解决这个问题吗?合并2个字节
Q
合并2个字节
2
A
回答
2
试试这个:
byte C = (byte)(
(A & 0x80) |
((A & 0x20) << 1) |
((A & 0x08) << 2) |
((A & 0x02) << 3) |
((B & 0x80) >> 4) |
((B & 0x20) >> 3) |
((B & 0x08) >> 2) |
((B & 0x02) >> 1));
看到它联机工作:ideone
0
像这样的东西应该这样做:
var nibble1 = ((a & 0x80) << 3) | ((a & 0x20) << 2) |
((a & 0x08) << 1) | (a & 0x02);
var nibble2 = ((b & 0x80) << 3) | ((b & 0x20) << 2) |
((b & 0x08) << 1) | (b & 0x02);
var result = (nibble1 << 4) | nibble2;
对于每个输入字节你把 “第一次”(实际上通常从另一端开始计算,但我会用这个听起来更直接的字节),将它移到3个位置(为其他位置留出空间),添加“thi rd“字节(将它移到两个地方)等等。
然后,您将第一个半字节移到刚刚计算出的四个位置(为第二个空间)并将它们粘在一起。
0
$a = 154; //10011010
$b = 114; //01110010
$expected = 181; //10110101
$result = (($a>>1)&1)+(($a>>2)&2)+(($a>>3)&4)+(($a>>4)&8) << 4
| (($b>>1)&1)+(($b>>2)&2)+(($b>>3)&4)+(($b>>4)&8);
echo $expected == $result;
让我想想看一小会儿,这可以更有效的进行......
还有一句:
$a = 154; //10011010
$b = 114; //01110010
$expected = 181; //10110101
$result = ($a&0x80)+(($a<<1)&0x40)+(($a<<2)&0x20)+(($a<<3)&0x10)+
(($b>>4)&0x8)+(($b>>3)&0x4)+(($b>>2)&0x2)+(($b>>1)&0x1);
echo $expected == $result;
...而现在我的通知C#标记...
相关问题
- 1. 合并2 PDF字节数组到1
- 2. C#合并2个字典
- 3. 使用Itextsharp合并2个pdf字节流
- 4. C中2个字节的字节缩短为2个字节?
- 5. 将两个字节合并为一个
- 6. 第二个字节[]合并PDF时覆盖第一个字节[]
- 7. 合并2个数组并合并数字键的结果
- 8. 合并多个字节数组c#
- 9. C#合并/ Decombine两个字节数组
- 10. 合并java/android中的两个字节
- 11. 合并2个集合
- 12. 合并2个表
- 13. 合并2个字典在Python这样
- 14. 在Python中合并2个字典
- 15. 在一个字节中组合2个数字
- 16. 将2个8位字节阵列位置合并为一个16位整数
- 17. 将2个重复的xml节点合并为一个
- 18. 合并两个DOMDocument节点
- 19. php合并2个阵列
- 20. 动态合并2个类
- 21. 合并2个jQuery函数
- 22. 合并这2个阵列
- 23. 如何合并2个JFrames?
- 24. 合并2个在PHP
- 25. 合并2个YouTube API?
- 26. 合并2个PHP脚本
- 27. 合并2个数据表
- 28. 合并2个onClick事件?
- 29. 合并2个MDX查询
- 30. C#合并2个报告