귀하의 예는 일반적으로, 혼합 것으로 보인다 : 그것은 그 결과의 반전 후
byte[] reversedResult = numberToByteArray.Reverse().ToArray();
: 결과를 리버스 -
당신은 [3] 대신에 값이 numberToByteArray에 있어야합니다 십진수 1을 나타내려면 00 00 00 01
(빅 엔디안), 01 00 00 00
(리틀 엔디안) 또는 00 01 00 00
(중간 엔디안) 중 하나가됩니다. 네가 가진 것은 중간 엔디안과 비슷하지만 바이트 수준이다.
당신은 니블 직접 플립해야합니다 :
var Index = 0;
var array = new byte[7];
var num = 0x87654321;
var t = num;
array[Index + 2] = (byte)((t & 0xF) << 4 | (t & 0xf0) >> 4); t >>= 8;
array[Index + 3] = (byte)((t & 0xF) << 4 | (t & 0xf0) >> 4); t >>= 8;
array[Index + 4] = (byte)((t & 0xF) << 4 | (t & 0xf0) >> 4); t >>= 8;
array[Index + 5] = (byte)((t & 0xF) << 4 | (t & 0xf0) >> 4);
Console.Writeline("{0:X2} {1:X2} {2:X2} {3:X2}", array[2], array[3], array[4], array[5]);
// prints: 12 34 56 78
편집 :를이 빅 엔디안으로 당신이 찾고 있다면, 다음 햄릿 코비안의 대답은 적절하다.
바이트 순서는 어떻습니까? –
바이트 순서를 표시하기 위해 회신을 조금 편집했습니다. – PiotrWolkowski
이것은 또한 이식 가능하지 않습니다. 'BitConverter'는 실행중인 CPU의 엔디안에 따라 다른 값을 반환합니다. 크로스 플랫폼을 사용하려면'BitConverter.IsLittleEndian'을 확인하십시오. – Mitch