📄 pgpendianconversion.c
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: pgpEndianConversion.c,v 1.5 2002/08/06 20:10:34 dallen Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h" /* or pgpConfig.h in the CDK */
#include "pgpEndianConversion.h"
PGPUInt16
PGPEndianToUInt16(
PGPEndianType type,
const PGPByte * raw )
{
PGPUInt16 result;
if ( type == kPGPBigEndian )
{
result = raw[ 0 ];
result <<= 8;
result |= raw[ 1 ];
}
else
{
result = raw[ 1 ];
result <<= 8;
result |= raw[ 0 ];
}
return( result );
}
PGPUInt32
PGPEndianToUInt32(
PGPEndianType type,
const PGPByte * raw )
{
PGPUInt32 result;
if ( type == kPGPBigEndian )
{
result = raw[ 0 ]; result <<= 8;
result |= raw[ 1 ]; result <<= 8;
result |= raw[ 2 ]; result <<= 8;
result |= raw[ 3 ];
}
else
{
result = raw[ 3 ]; result <<= 8;
result |= raw[ 2 ]; result <<= 8;
result |= raw[ 1 ]; result <<= 8;
result |= raw[ 0 ];
}
return( result );
}
#if PGP_HAVE64
PGPUInt64
PGPEndianToUInt64(
PGPEndianType type,
const PGPByte * raw )
{
PGPUInt64 result;
if ( type == kPGPBigEndian )
{
result = raw[ 0 ]; result <<= 8;
result |= raw[ 1 ]; result <<= 8;
result |= raw[ 2 ]; result <<= 8;
result |= raw[ 3 ]; result <<= 8;
result |= raw[ 4 ]; result <<= 8;
result |= raw[ 5 ]; result <<= 8;
result |= raw[ 6 ]; result <<= 8;
result |= raw[ 7 ];
}
else
{
result = raw[ 7 ]; result <<= 8;
result |= raw[ 6 ]; result <<= 8;
result |= raw[ 5 ]; result <<= 8;
result |= raw[ 4 ]; result <<= 8;
result |= raw[ 3 ]; result <<= 8;
result |= raw[ 2 ]; result <<= 8;
result |= raw[ 1 ]; result <<= 8;
result |= raw[ 0 ];
}
return( result );
}
#endif
void
PGPUInt16ToEndian(
PGPUInt16 num,
PGPEndianType toType,
PGPByte out[ sizeof( PGPUInt16 ) ] )
{
if ( toType == kPGPBigEndian )
{
out[0] = num >> 8;
out[1] = num & 0xFF;
}
else
{
out[ 0 ] = num & 0xFF;
num >>= 8;
out[ 1 ] = num & 0xFF;
}
}
void
PGPUInt32ToEndian(
PGPUInt32 num,
PGPEndianType toType,
PGPByte out[ sizeof( PGPUInt32 ) ] )
{
if ( toType == kPGPBigEndian )
{
out[0] = num >> 24;
out[1] = (num >> 16) & 0xFF;
out[2] = (num >> 8) & 0xFF;
out[3] = num & 0xFF;
}
else
{
out[ 0 ] = num & 0xFF;
num >>= 8;
out[ 1 ] = num & 0xFF;
num >>= 8;
out[ 2 ] = num & 0xFF;
num >>= 8;
out[ 3 ] = num & 0xFF;
}
}
#if PGP_HAVE64
void
PGPUInt64ToEndian(
PGPUInt64 num,
PGPEndianType toType,
PGPByte out[ sizeof( PGPUInt64 ) ] )
{
if ( toType == kPGPBigEndian )
{
out[0] = (PGPByte) (num >> 56);
out[1] = (PGPByte) ((num >> 48) & 0xFF);
out[2] = (PGPByte) ((num >> 40) & 0xFF);
out[3] = (PGPByte) ((num >> 32) & 0xFF);
out[4] = (PGPByte) ((num >> 24) & 0xFF);
out[5] = (PGPByte) ((num >> 16) & 0xFF);
out[6] = (PGPByte) ((num >> 8) & 0xFF);
out[7] = (PGPByte) (num & 0xFF);
}
else
{
out[0] = (PGPByte) (num & 0xFF); num >>= 8;
out[1] = (PGPByte) (num & 0xFF); num >>= 8;
out[2] = (PGPByte) (num & 0xFF); num >>= 8;
out[3] = (PGPByte) (num & 0xFF); num >>= 8;
out[4] = (PGPByte) (num & 0xFF); num >>= 8;
out[5] = (PGPByte) (num & 0xFF); num >>= 8;
out[6] = (PGPByte) (num & 0xFF); num >>= 8;
out[7] = (PGPByte) (num & 0xFF);
}
}
#endif
void
PGPUInt16ToStorage(
PGPUInt16 num,
PGPByte out[ sizeof( PGPUInt16 ) ] )
{
PGPUInt16ToEndian( num, kPGPLittleEndian, out );
}
void
PGPUInt32ToStorage(
PGPUInt32 num,
PGPByte out[ sizeof( PGPUInt32 ) ] )
{
PGPUInt32ToEndian( num, kPGPLittleEndian, out );
}
#if PGP_HAVE64
void
PGPUInt64ToStorage(
PGPUInt64 num,
PGPByte out[ sizeof( PGPUInt64 ) ] )
{
PGPUInt64ToEndian( num, kPGPLittleEndian, out );
}
#endif
PGPUInt16
PGPStorageToUInt16( const PGPByte * in )
{
return( PGPEndianToUInt16( kPGPLittleEndian, in ) );
}
PGPUInt32
PGPStorageToUInt32( const PGPByte * in )
{
return( PGPEndianToUInt32( kPGPLittleEndian, in ) );
}
#if PGP_HAVE64
PGPUInt64
PGPStorageToUInt64( const PGPByte * in )
{
return( PGPEndianToUInt64( kPGPLittleEndian, in ) );
}
#endif
/*__Editor_settings____
Local Variables:
tab-width: 4
End:
vi: ts=4 sw=4
vim: si
_____________________*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -