我有一個字節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個報告