类型转换的函数
来源:互联网 发布:软件流量 编辑:程序博客网 时间:2024/05/21 22:24
一些转换的代码,在MFC中用到的,也经过MFC的调试了.
inline LPTSTR B2A(BSTR lp)
...{
int nLen=(lstrlenW(lp)+1)<<1;
LPTSTR str=new char[nLen];
WideCharToMultiByte(CP_ACP, 0, lp, -1, str, nLen, NULL, NULL);
return str;
}
...{
int nLen=(lstrlenW(lp)+1)<<1;
LPTSTR str=new char[nLen];
WideCharToMultiByte(CP_ACP, 0, lp, -1, str, nLen, NULL, NULL);
return str;
}
inline BSTR A2B(LPCSTR lp)
...{
int nLen = lstrlen(lp)>>1-1;
BSTR str = ::SysAllocStringLen(NULL, nLen);
MultiByteToWideChar(CP_ACP, 0, lp, -1, str, nLen);
return str;
}
...{
int nLen = lstrlen(lp)>>1-1;
BSTR str = ::SysAllocStringLen(NULL, nLen);
MultiByteToWideChar(CP_ACP, 0, lp, -1, str, nLen);
return str;
}
//由wchar转成char
//WCHAR 2 CHAR char wcharscu[160]; int wcharlen;
char chardec[160];
ZeroMemory(&chardec, 160);
unsigned char uchTmp = 0;
unsigned char pchTmp[1024];
ZeroMemory(pchTmp, 1024);
memcpy(pchTmp, wcharscu,wcharlen);
for (unsigned ix=0; ix<wcharlen/2; ix++)
...{
uchTmp = pchTmp[ix*2];
pchTmp[ix*2] = pchTmp[ix*2 + 1];
pchTmp[ix*2 + 1] = uchTmp;
}
int nRet = WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, (LPCWSTR)pchTmp, wcharlen/2,
chardec, 160, NULL, NULL);
wcharlen = nRet;
ZeroMemory( wcharscu, 160);
memcpy( wcharscu, chardec, nRet);
//由bstr转成char bstr str[255]; int strlen
char messagebuff[255];
bcd2ascii(messagebuff,str,strlen);
lstrcpy(str,messagebuff);
int len=lstrlen(str);
void bcd2ascii(char *dst, char *src, const int len)
...{
char *p;
p = src;
while (p < src + len) ...{
*dst++ = (*p >> 4) + 0x30;
*dst++ = (*p & 0x0F) + 0x30;
p++;
}
*dst = 0x00;
}
//WCHAR 2 CHAR char wcharscu[160]; int wcharlen;
char chardec[160];
ZeroMemory(&chardec, 160);
unsigned char uchTmp = 0;
unsigned char pchTmp[1024];
ZeroMemory(pchTmp, 1024);
memcpy(pchTmp, wcharscu,wcharlen);
for (unsigned ix=0; ix<wcharlen/2; ix++)
...{
uchTmp = pchTmp[ix*2];
pchTmp[ix*2] = pchTmp[ix*2 + 1];
pchTmp[ix*2 + 1] = uchTmp;
}
int nRet = WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, (LPCWSTR)pchTmp, wcharlen/2,
chardec, 160, NULL, NULL);
wcharlen = nRet;
ZeroMemory( wcharscu, 160);
memcpy( wcharscu, chardec, nRet);
//由bstr转成char bstr str[255]; int strlen
char messagebuff[255];
bcd2ascii(messagebuff,str,strlen);
lstrcpy(str,messagebuff);
int len=lstrlen(str);
void bcd2ascii(char *dst, char *src, const int len)
...{
char *p;
p = src;
while (p < src + len) ...{
*dst++ = (*p >> 4) + 0x30;
*dst++ = (*p & 0x0F) + 0x30;
p++;
}
*dst = 0x00;
}
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int DWORD;
------------------------------
unsigned char 无符号字符 0~255
char 有符号字符 -127~128
//char -->>_variant_t
char str[110];
_bstr_t bsstr =(_bstr_t) str;
_variant_t varstr = _variant_t(bsstr);
char str[110];
_bstr_t bsstr =(_bstr_t) str;
_variant_t varstr = _variant_t(bsstr);
- 类型转换的函数
- delphi 的类型转换函数
- 函数的强制类型转换
- 有用的类型转换函数
- C++的类型转换函数
- ASP的类型转换函数(详细讲解)
- 两个方向的类型转换函数
- 各种时间类型之间的转换函数
- VARIANT类型的两个转换函数
- 函数指针的强制类型转换
- C语言的常用类型转换函数
- 一个简单的类型转换函数
- 函数指针的强制类型转换
- 函数指针的强制类型转换
- 函数指针的强制类型转换
- 使用类型转换函数的简单例子
- c++类的类型转换函数
- Qt QString类型转换为其他类型的函数
- 技术幽默
- 引用“子非鱼”的文章(关于C#Attribute(特性))
- 生日,大雪
- 人员招聘与日常培训
- LoadRunner工具入门知识介绍
- 类型转换的函数
- 将Apache与tomcat整合(转)
- Ext2.0框架的Grid使用介绍
- Lomboz-Eclipse代码提示功能的设置
- 怎样安装和配置Tomcat Admin
- 自动化代码分析的过去、现状和将来
- Unpacking .net Reactor 3.5,3.6 tutorials
- 上班必读:五险一金
- 开源的Web Service测试工具