1

私がやろうとしているのは、バイト配列の値をループして各値の最初の桁を取得し、その場所を2番目の桁と交換することです。したがって、35は53になり、24は42になります。私はすべてを文字列に変換する必要があり、それは少しやり過ぎのようです

私はしばらくそれを試しましたが、これまでのところ、すべてを文字列に変換してからそれらに取り組むことができると思っただけで、少し不格好に思えます。

4

2 に答える 2

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;
}
于 2012-11-11T20:50:12.170 に答える
1
byte nmbBase =16; //or any other 10 for decimal
byte firstDigit = number /nmbBase;
byte secondDigit = number % nmbBase;
number = secondDigit*numberBase + firstDigit;

これは携帯電話からです、間違いをお詫びします。あなたはあなたが行くべき方向に着くべきです。

于 2012-11-11T20:56:37.930 に答える