www.pudn.com > 密聊源程序.rar > __DWORD128.cpp


// __DWORD128.cpp: implementation of the __DWORD128 class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "SecretChat.h" 
#include "__DWORD128.h" 
 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
__DWORD128::__DWORD128() 
{ 
	srand((unsigned)::GetTickCount()); 
	char *y;// = new char[16]; 
	y = (char *)a; 
	for(int i = 0;i < 16;i++) 
	{ 
		y[i] = (char)(0x41+rand()%0xAF); 
	} 
 
} 
 
__DWORD128::__DWORD(DWORD x, DWORD y, DWORD z, DWORD w) 
{ 
	a[0] = x; 
	a[1] = y; 
	a[2] = z; 
	a[3] = w; 
} 
 
__DWORD128::__DWORD(DWORD *x) 
{ 
	a[0] = x[0]; 
	a[1] = x[1]; 
	a[2] = x[2]; 
	a[3] = x[3]; 
 
} 
 
__DWORD128::~__DWORD128() 
{ 
} 
 
void __DWORD128::DigitalID()//把自己变成数字标识,他是一个固定的数 
{ 
	a[0] = 0x01234567; 
	a[1] = 0x89abcdef; 
	a[2] = 0xfedcba98; 
	a[3] = 0x76543210; 
} 
 
long __DWORD128::IsDigitalID() 
{ 
	if(a[0] != 0x01234567) 
	{ 
		return 0; 
	} 
	if(a[1] != 0x89abcdef) 
	{ 
		return 0; 
	} 
	if(a[2] != 0xfedcba98) 
	{ 
		return 0; 
	} 
	if(a[3] != 0x76543210) 
	{ 
		return 0; 
	} 
 
	return 1; 
} 
 
void __DWORD128::RandCount()	//把自己变成一个随机数 
{ 
	srand((unsigned)::GetTickCount()); 
	char *y;// = new char[16]; 
	y = (char *)a; 
	for(int i = 0;i < 16;i++) 
	{ 
		y[i] = (char)(0x41+rand()%0xAF); 
	} 
} 
 
void __DWORD128::Nil()			//把自己变成零 
{ 
	a[0] = 0X00000000; 
	a[1] = 0X00000000; 
	a[2] = 0X00000000; 
	a[3] = 0X00000000; 
} 
 
void __DWORD128::Load(DWORD *x)//把DWORD数组赋值个__DWORD128类型 
{ 
	a[0] = x[0]; 
	a[1] = x[1]; 
	a[2] = x[2]; 
	a[3] = x[3]; 
} 
 
void __DWORD128::Store(DWORD *x)//把__DWORD128类型赋值个DWORD数组 
{ 
	x[0] = a[0]; 
	x[1] = a[1]; 
	x[2] = a[2]; 
	x[3] = a[3]; 
} 
 
void __DWORD128::operator =(__DWORD128 &x) 
{ 
	a[0] = x.a[0]; 
	a[1] = x.a[1]; 
	a[2] = x.a[2]; 
	a[3] = x.a[3]; 
} 
 
void __DWORD128::operator %(__DWORD128 &x) 
{ 
	__DWORD128 z; 
	z = x; 
	x = *this; 
	*this = z; 
} 
 
long __DWORD128::operator ==(__DWORD128 &x) 
{ 
	if(a[3] != x.a[3]) return FALSE; 
	if(a[2] != x.a[2]) return FALSE; 
	if(a[1] != x.a[1]) return FALSE; 
	if(a[0] != x.a[0]) return FALSE; 
 
	return TRUE; 
} 
 
long __DWORD128::operator <(__DWORD128 &x) 
{ 
	if(x.a[3] < a[3]) return FALSE; 
	if(x.a[2] < a[2]) return FALSE; 
	if(x.a[1] < a[1]) return FALSE; 
	if(x.a[0] <= a[0]) return FALSE; 
 
	return TRUE; 
} 
 
long __DWORD128::operator >(__DWORD128 &x) 
{ 
	if(x.a[3] > a[3]) return TRUE; 
	if(x.a[2] > a[2]) return TRUE; 
	if(x.a[1] > a[1]) return TRUE; 
	if(x.a[0] > a[0]) return TRUE; 
 
	return FALSE; 
} 
 
__DWORD128 addition;	//为什么addition不能在operator ^里定义呢?因为在返回这个局部变量前会被注销 
__DWORD128& __DWORD128::operator ^(__DWORD128 &x) 
{ 
	addition.a[0] = x.a[0] ^ a[0]; 
	addition.a[1] = x.a[1] ^ a[1]; 
	addition.a[2] = x.a[2] ^ a[2]; 
	addition.a[3] = x.a[3] ^ a[3]; 
 
	return addition; 
} 
 
__DWORD128 addition2; 
__DWORD128& __DWORD128::operator +(__DWORD128 &x) 
{ 
	addition2.a[0] = x.a[0] + a[0]; 
	addition2.a[1] = x.a[1] + a[1]; 
	addition2.a[2] = x.a[2] + a[2]; 
	addition2.a[3] = x.a[3] + a[3]; 
 
	return addition2; 
}