BitConverter.ToUInt16()은 바이트가 반전 될 것으로 예상하므로 메모리에 저장되는 방법이라고 생각합니다. 하지만 배열을 수정하지 않고 반전되지 않을 때 어떻게 변환 할 수 있습니까?Byte 배열을 C#의 Int-likes로 변환
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
BitConverter.ToUInt16()은 바이트가 반전 될 것으로 예상하므로 메모리에 저장되는 방법이라고 생각합니다. 하지만 배열을 수정하지 않고 반전되지 않을 때 어떻게 변환 할 수 있습니까?Byte 배열을 C#의 Int-likes로 변환
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
그것은 소리 내 당신이 큰 또는 작은 엔디 언을 사용할지 여부를 지정할 수 있습니다 EndianBitConverter
MiscUtil
에서.
기본적으로 BitConverter
과 동일한 기능을하지만 인스턴스 메서드로 제공합니다. 그런 다음 적절한 종류의 EndianBitConverter
을 얻고 원하는대로하십시오.
는 (그것은 나에게 유용하지 않을 수도 있습니다 배열, 효율적으로 작업을위한 좀 더 많은 기능을 제공합니다.)
라이브러리는 매우 관대 한 라이센스하에 오픈 소스 화입니다.
여러분의 최선의 호출은 Array.Reverse 메서드를 사용하여 배열을 역전시키는 것입니다. 당신이 원하는 것처럼
http://msdn.microsoft.com/en-us/library/system.array.reverse(VS.71).aspx
각 Int16의 바이트가 아니라 전체 배열을 뒤집을 수 있습니다. –
존의 말이 맞아, 그게 내가 피하려고했던거야. 그러나 thnx 답장! – flamey
또한 IPAddress.HostToNetworkOrder를 사용할 수도 있습니다.
"당신이 이것을 바꾸고 싶다면 존 스캣이 당신보다 당신의 코드를 더 잘 알고 당신의 코드를 위해 이것을 이미 최적화했다"라는 면허가 있기 때문에 상당히 허용적인 의미인가? –