我有一个字节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#合并/ Decombine两个字节数组
- 5. 合并java/android中的两个字节
- 6. 合并多个字节数组c#
- 7. 合并2个集合
- 8. 在一个字节中组合2个数字
- 9. 合并两个DOMDocument节点
- 10. 合并2个csv文件
- 11. php合并2个阵列
- 12. 合并这2个阵列
- 13. 合并2个表完整
- 14. 合并2个集,laravel
- 15. 合并2个GetText文件
- 16. 合并2个YouTube API?
- 17. 合并2个子查询
- 18. C#合并2个报告
- 19. 合并2个onClick事件?
- 20. linq合并2个查询
- 21. 合并2个PHP脚本
- 22. 合并2个数据表
- 23. 如何合并2个JFrames?
- 24. 在C中将2个字节组合成一个短int int
- 25. 修改的2个字节
- 26. BitConverter.ToInt32转换2个字节
- 27. 如何排列2名或更多字节的项目合并为一个字节元素
- 28. Java中的字符是1个字节还是2个字节?
- 29. 结合在XSL 2个节点集
- 30. 将2个可观察物合并/合并成一个