1

我想要做的是遍历字节数组中的值,获取每个值的第一个数字并将其位置与第二个数字交换,所以 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 回答