数据类型转换
判断数据类型 0表示QString 1 表示Bool 2表示Int 3表示Double
int judgeQVariantType(QVariant _vlaue) {
QVariant::Type sValue = _vlaue.type();
if (sValue == QVariant::Bool) {
return 1;
}
else if (sValue == QVariant::Int) {
return 2;
}
else if (sValue == QVariant::Double) {
return 3;
}
return 0;
}
CString转TCHAR
TCHAR* CStringToTChar(CString& str)
{
int len = str.GetLength();
TCHAR* tr = str.GetBuffer(len);
str.ReleaseBuffer();
return tr;
}
CString转char*
char* CStringtoChar(CString str)
{
char *ptr;
#ifdef _UNICODE
LONG len;
len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
ptr = new char[len + 1]; memset(ptr, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, str, -1, ptr, len + 1, NULL, NULL);
#else
ptr = new char[str.GetAllocLength() + 1];
sprintf(ptr, _T("%s"), str);
#endif
return ptr;
}
CString与QString互转
//CString转QString
QString CStringToQString(CString srcStr)
{
return QString::fromLocal8Bit(CStringtoChar(srcStr));
}
//QString转CString
CString QStringToCString(QString srcStr)
{
CString str;
#ifdef _UNICODE
str = srcStr.toStdWString().c_str();
#else
str = srcStr.toStdString().c_str();
#endif
return str;
}
string 与 QString互转
//string转QString
QString StringToQString(std::string srcStr) {
QByteArray qba = QByteArray::fromStdString(srcStr);
return QString::fromLocal8Bit(qba);
}
//QString转string
std::string QStringToString(QString srcStr) {
std::string str;
#ifdef _UNICODE
QByteArray mstr = srcStr.toLocal8Bit();
str = std::string(mstr);
#else
str = strQ.toStdString();;
#endif
return str;
}
BYTE转16进制
QString byteToHexStr(unsigned char byte_arr[], int arr_len) {
std::string hexstr = "";
for (int i = 0;i < arr_len;i++) {
char hex1;char hex2;
int value = byte_arr[i];
int S = value / 16; int Y = value % 16;
if (S >= 0 && S <= 9)
hex1 = (char)(48 + S);
else
hex1 = (char)(55 + S);
if (Y >= 0 && Y <= 9)
hex2 = (char)(48 + Y);
else
hex2 = (char)(55 + Y);
hexstr = hexstr + hex1 + hex2;
}
return StringToQString(hexstr);
}
GBK与UTF8互转
void ConvertGBKToUtf8(std::string& amp, std::string strGBK)
{
int len = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)strGBK.c_str(), -1, NULL, 0);
unsigned short * wszUtf8 = new unsigned short[len + 1];
memset(wszUtf8, 0, len * 2 + 2);
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)strGBK.c_str(), -1, (LPWSTR)wszUtf8, len);
len = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)wszUtf8, -1, NULL, 0, NULL, NULL);
char *szUtf8 = new char[len + 1];
memset(szUtf8, 0, len + 1);
WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)wszUtf8, -1, szUtf8, len, NULL, NULL);
//strGBK = szUtf8;
amp = szUtf8;
delete[] szUtf8;
delete[] wszUtf8;
}
void ConvertUtf8ToGBK(std::string&, std::string strUtf8)
{
int len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)strUtf8.c_str(), -1, NULL, 0);
unsigned short * wszGBK = new unsigned short[len + 1];
memset(wszGBK, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)strUtf8.c_str(), -1, (LPWSTR)wszGBK, len);
len = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK = new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wszGBK, -1, szGBK, len, NULL, NULL);
//strUtf8 = szGBK;
amp = szGBK;
delete[] szGBK;
delete[] wszGBK;
}