⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.cpp

📁 UHF RFID Reader Program
💻 CPP
字号:
#include "StdAfx.h"
#include "Util.h"

#include <stdio.h>

namespace techwin
{
	CUtil::CUtil(void)
	{
	}

	CUtil::~CUtil(void)
	{
	}

	__int32 CUtil::StrToWord(CString Param)//CString-> Bin箭磊肺 change
	{
		CString sBuffer;
		wchar_t	*cBuffer, *cStrStopString;
		_int32	Total=0, Int32Upper=0, Int32Lower=0;
		int		nStrLength;

		if (Param.GetLength() <= 8)
		{
			//get lower 32bit
			sBuffer = _T("0X") + Param;
			nStrLength = sBuffer.GetLength();
			cBuffer = sBuffer.GetBuffer(nStrLength);
			Int32Lower	= wcstoul(cBuffer, &cStrStopString, 16);
		}

		Total = Int32Lower;

		return Total;
	}

	__int64 CUtil::StrToDWord(CString Param)//CString-> Bin箭磊肺 change
	{
		CString sBuffer;
		wchar_t	*cBuffer, *cStrStopString;
		_int64	Total=0, Int64Upper=0, Int64Lower=0;
		int		nStrLength;

		if (Param.GetLength() > 8)
		{
			//get upper 32bit
			sBuffer = _T("0X") + Param;
			nStrLength = Param.GetLength() - 8;
			sBuffer = sBuffer.Left(nStrLength+2);
			cBuffer = sBuffer.GetBuffer(nStrLength+2);
			Int64Upper	= wcstoul(cBuffer, &cStrStopString, 16);
			//get lower 32bit
			sBuffer = Param.Mid(nStrLength);
			sBuffer = _T("0X") + sBuffer;
			cBuffer = sBuffer.GetBuffer(10);
			Int64Lower	= wcstoul(cBuffer, &cStrStopString, 16);
		}

		Total = (Int64Upper * 0x100000000) + Int64Lower;
		
		return Total;
	}

	CString	CUtil::WordToStr(WORD in)
	{
		char buff[8];
#ifndef WINCE
		sprintf_s(buff, "%u", in);
#else if
		sprintf(buff, "%u", in);
#endif
		return (CString)buff;
	}

	CString	CUtil::WordToHexStr(WORD in)
	{
		char buff[8];
#ifndef WINCE
		sprintf_s(buff, "%.8x", in);
#else if
		sprintf(buff, "%.8x", in);
#endif
		return (CString)buff;
	}


	CString	CUtil::DWordToStr(DWORD in)
	{
		char buff[16];

#ifndef WINCE
		sprintf_s(buff, "%u", in);
#else if
		sprintf(buff, "%u", in);
#endif

		return (CString)buff;
	}

	void CUtil::endian_swap(unsigned short& x)
	{
		x = (x>>8) | 
			(x<<8);
	}

	void CUtil::endian_swap(unsigned __int32& x)
	{
		x = (x>>24) | 
			((x<<8) & 0x00FF0000) |
			((x>>8) & 0x0000FF00) |
			(x<<24);
	}

	// __int64 for MSVC, "long long" for gcc
	void CUtil::endian_swap(unsigned __int64& x)
	{
		x = (x>>56) | 
			((x<<40) & 0x00FF000000000000) |
			((x<<24) & 0x0000FF0000000000) |
			((x<<8)  & 0x000000FF00000000) |
			((x>>8)  & 0x00000000FF000000) |
			((x>>24) & 0x0000000000FF0000) |
			((x>>40) & 0x000000000000FF00) |
			(x<<56);
	}

	/////////////////////////////////////////////////////////////////////
	//  char -> wchar

	wchar_t* CUtil::CharToWChar(const char* pstrSrc)
	{
		ASSERT(pstrSrc);
		int nLen = strlen(pstrSrc)+1;

		wchar_t* pwstr      = (LPWSTR) malloc ( sizeof( wchar_t )* nLen);
		mbstowcs(pwstr, pstrSrc, nLen);

		return pwstr;
	}

	/////////////////////////////////////////////////////////////////////
	// wchar -> char
	char* CUtil::WCharToChar(const wchar_t* pwstrSrc)
	{
		ASSERT(pwstrSrc);

#if !defined _DEBUG
		int len = 0;
		len = (wcslen(pwstrSrc) + 1)*2;
		char* pstr      = (char*) malloc ( sizeof( char) * len);

		WideCharToMultiByte( 949, 0, pwstrSrc, -1, pstr, len, NULL, NULL);
#else

		int nLen = wcslen(pwstrSrc);

		char* pstr      = (char*) malloc ( sizeof( char) * nLen + 1);
		wcstombs(pstr, pwstrSrc, nLen+1);
#endif

		return pstr;
	}

	DWORD CUtil::Str2Hex( CString const & s )
	{
		DWORD result = 0;

		for ( int i = 0; i < s.GetLength(); i++ )
		{
			if ( isdigit( s[ i ] ) )
			{
				result = result * 16 + ( s[ i ] - '0' );
			}
			else // if ( isxdigit( s[ i ] ) )
			{
				result = result * 16 + ( s[ i ] - 'a' + 10 ); 
			}
		}

		return result;
	}

	CString CUtil::Hex2Str( const INT8U *bytes, int length)
	{
		int index;
		CString stemp, str; 
		str = "";

		for (index = 0; index < length; ++index)
		{
			//		stemp.Format(_T("%s%.2x"), (index && !(index % 4)) ? _T(" ") : _T(""), bytes[index]);
			stemp.Format(_T("%.2x"), bytes[index]);
			str += stemp;
		}

		str.MakeUpper();

		return str;
	}


};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -