windows-nt/Source/XPSP1/NT/ds/security/services/w32time/lib/endianswap.inl
2020-09-26 16:20:57 +08:00

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;
}