동적 엔디안 ..
요즘 리틀엔디안이 주류이지만 호스트 컴퓨터에서 엔디안 변환을 처리하면 좋지 않겠나요.
분명 어떤 효과기 있을 것이어요.
[MethodImpl(MethodImplOptions.AggressiveInlining)]
unsafe public static void WriteInt64(byte[] bytes, int offset, long value) {
fixed(byte* p = &bytes[offset]) {
#if BIGENDIAN
var x = (value >> 32) | (value << 32);
x = ((x & 0xFFFF0000FFFF0000) >> 16) | ((x & 0x0000FFFF0000FFFF) << 16);
*(long*)p = ((x & 0xFF00FF00FF00FF00) >> 8) | ((x & 0x00FF00FF00FF00FF) << 8);
#else
*(long*)p = value;
#endif
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
unsafe public static void WriteInt32(byte[] bytes, int offset, int value) {
fixed(byte* p = &bytes[offset]) {
#if BIGENDIAN
var x = (value >> 16) | (value << 16);
*(int*)p = (( x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8);
#else
*(int*)p = value;
#endif
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
unsafe public static void WriteInt16(byte[] bytes, int offset, short value) {
fixed (byte* p = &bytes[offset]) {
#if BIGENDIAN
*(short*)p = (value >> 16) | (value << 16);
#else
*(short*)p = value;
#endif
}
}