코드 비교

2817 단어 코드
아래의 내용이 같지 않은데 랜덤이라니, 참 비극적인 일인데????

#include "stdafx.h"
#include <string>
#include <Windows.h>
#include <iostream>
#include <time.h>
#include <assert.h>
using namespace std;

inline char convert1(string &value, int index)
{
	char data[2];
	data[0] = value[index];
	data[1] = value[index+1];
	int x = 0;
	sscanf(data, "%X", &x);
	char ch = x;
	return ch;
}

inline char convert2(string &value, int index)
{
	const char *pData = value.c_str() + index;
	int num = 0;
	if (*pData >= '0' && *pData <= '9')
	{
		num = (*pData - '0') << 4;
	}
	else if (*pData >= 'a' && *pData <= 'f')
	{
		num = (*pData - 'a' + 10) << 4;
	}
	else if (*pData >= 'A' && *pData <= 'F')
	{
		num = (*pData - 'A' + 10) << 4;
	}

	pData++;
	if (*pData >= '0' && *pData <= '9')
	{
		num += (*pData - '0');
	}
	else if (*pData >= 'a' && *pData <= 'f')
	{
		num += (*pData - 'a' + 10);
	}
	else if (*pData >= 'A' && *pData <= 'F')
	{
		num += (*pData - 'A' + 10);
	}
	char ch = num;
	return ch;
}


int _tmain(int argc, _TCHAR* argv[])
{
#ifndef test2
	const int signNum = 22;
	char sign[signNum] = {'0', '1','2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F'};
	srand ( time(NULL) );
	int num1,num2;
	const int valueLen = 1000;
	for (int j = 0; j < 1000; ++j)
	{
		string value;
		for (int i = 0; i< valueLen/2; i++)
		{
			num1 = rand() % signNum;
			num2 = rand() % signNum;
			assert(num1 >=0 && num1 < signNum);
			assert(num2 >=0 && num2 < signNum);
			value += sign[num1];
			value += sign[num2];
		}

		for (int k = 0; k < valueLen; k+=2)
		{
			if (convert1(value, k) != convert2(value, k))
			{
				cout << "!=" << endl;
				cout << value[k] << "\t"<< value[k+1] << endl;
				return 0;
			}
		}		
	}	
	
#endif
	return 0;
}



좋은 웹페이지 즐겨찾기