2010-02-11 80 views
14

我正在尋找一種有效的C語言中按位轉置8字節數據的算法。我的意思與此的是,如果我有8個字節這樣的:8位字節的按位轉置

00011100 
00111000 
00000001 
00000000 
11000000 
00000000 
11111111 
01010101 

我希望得到以下8個字節:

00001010 
00001011 
01000010 
11000011 
11000010 
10000011 
00000010 
00100011 

而且因爲我想用這個嵌入式平臺上,它應該儘可能快:-)

所有想法都非常感謝!

+2

這是什麼意思?我沒有看到輸入與所需輸出之間的關係。你想使用一個簡單的(256字節)查找表嗎? – 2010-02-11 11:19:25

+5

@Richard:這是一個矩陣轉置;行成爲列,反之亦然。如果您讀取結果的最左邊一列,則它等於輸入的第一行。由於有64個獨立的輸入位,查詢表變得很大。 – unwind 2010-02-11 11:22:36

+0

列正在變爲行,反之亦然。 – tur1ng 2010-02-11 11:23:00

回答

18

參見Hacker's Delight,第7-3章。

+0

謝謝。這正是我所期待的! – 2010-02-11 11:18:22

+0

@Arnaud,這真的很酷......但是什麼是需要這個功能的應用程序? – vicatcu 2010-02-19 23:30:55

+0

@vicatcu例如,如果您需要在一個字節寬的I/O端口上輸出8個串行數據流,這非常有用。 – jms 2017-10-31 12:11:39