2012-11-11 142 views
1

我想要做的是循環訪問每個數值的第一個數字並將其與第二個數字交換位置的字節數組中的值,因此35將是53並且24將是42 ..我幾乎可以做到這一點,但我必須將一切都轉換爲字符串,這似乎有點矯枉過正用一個字節中的第二個數字替換第一個數字

我已經嘗試了一段時間,但迄今爲止,我只想到,我可以轉換一切到一個字符串,然後在他們工作,只是似乎有點笨重..

+0

你的意思是十六進制數字嗎? – Aziz

+0

是你的字節的'35'十進制還是十六進制表示? –

+3

你真的應該發佈你的當前代碼並解釋你使用它的問題。 – Oded

回答

8

這聽起來像你想在每個字節交換高和低輕咬

0x35; // High nibble = 3, Low Nibble = 5 

要做到這一點,要轉變高四位右4位(以使其在低位),倒騰低四位左4位(使它的高四位)。

var ar = new byte[] { 0x35, 0x24 }; 

for (int i=0; i<ar.Length; i++) { 
    byte b = ar[i]; 
    b = (b>>4) | ((b&0x0F)<<4); 
    ar[i] = b; 
} 
+0

無法將int轉換爲字節缺少演員表。 – ace007

+0

在分配給b之前,您可能需要將整個右側轉換爲字節。 –

1
byte nmbBase =16; //or any other 10 for decimal 
byte firstDigit = number /nmbBase; 
byte secondDigit = number % nmbBase; 
number = secondDigit*numberBase + firstDigit; 

這是來自手機,遺憾的任何錯誤。你應該得到你應該去的方向。

+0

@ L.B感謝您的編輯。沒有電腦很難;-)。 –

相關問題