31 lines
1.2 KiB
C++
31 lines
1.2 KiB
C++
//--------------------------------------------------------------------
|
|
// EndianSwap - inline
|
|
// Copyright (C) Microsoft Corporation, 1999
|
|
//
|
|
// Created by: Louis Thomas (louisth), 4-16-99
|
|
//
|
|
// Inlines to do endian conversion.
|
|
// Suck these into a .cpp if you need them.
|
|
//
|
|
|
|
//--------------------------------------------------------------------
|
|
static inline unsigned __int16 EndianSwap(unsigned __int16 wSource) {
|
|
return (wSource&0x00ff)<<8 | (wSource&0xff00)>>8;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
static inline unsigned __int32 EndianSwap(unsigned __int32 dwSource) {
|
|
return
|
|
(dwSource&0x000000ff)<<24 | (dwSource&0x0000ff00)<<8
|
|
| (dwSource&0x00ff0000)>>8 | (dwSource&0xff000000)>>24;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
static inline unsigned __int64 EndianSwap(unsigned __int64 qwSource) {
|
|
return
|
|
(qwSource&0x00000000000000ff)<<56 | (qwSource&0x000000000000ff00)<<40
|
|
| (qwSource&0x0000000000ff0000)<<24 | (qwSource&0x00000000ff000000)<<8
|
|
| (qwSource&0x000000ff00000000)>>8 | (qwSource&0x0000ff0000000000)>>24
|
|
| (qwSource&0x00ff000000000000)>>40 | (qwSource&0xff00000000000000)>>56;
|
|
}
|