2012-02-14 85 views
0

這可能是一些你一個愚蠢的問題,但我要問。 我有這個問題,我無法弄清楚。如果有人有任何想法,我會很高興,如果你願意與我分享。 我有一個UInt64,我必須轉換爲二進制文件,並將它按組分爲5位。 然後根據每個位組設置不同的值。 我的問題是,我不能找出一個好的方法將其轉移到5位組。UINT二進制傳輸

後,我將ASIGN爲每個組不同的值。例如:

00000 - 0 
00001 - a 
00010 - B 
00011 - c 
00100 - d 
....... 

任何想法或建議嗎?

什麼將是後來更改值的最佳方法?我正在考慮一個開關

Switch() 
{ 
case "00000" : return 0; 
case "00001" : return a; 
case "00010" : return B; 
case "00011" : return c; 
} 

這裏是一個更多的解釋我想得到的是這個。例如我有64Uint = 1234123; 從它,我想下面的數組:

Array[,] something = new Array[12,5]; 
+0

顯示你有什麼至今。 – gdoron 2012-02-14 08:57:58

+0

正如我所說我不知道​​如何將其分解爲二進制。這就是爲什麼我在這裏問。我知道該怎麼做,但我不知道如何分解它。 – Jordan 2012-02-14 09:01:48

+3

你是什麼意思的** 5 **字節組?一個UInt64由8個字節組成。你的例子顯示** 4 **位組。 – CodesInChaos 2012-02-14 09:02:43

回答

1

可以使用位掩碼5個數據位組分裂UINT64:

UInt64 a = 1234; 
for (int i = 0; i < 64; i += 5) 
{ 
    uint fiveBits = (uint)((a >> i) & 31); 
    // fiveBits is between 0 and 31 
}