字符转换MFC
来源:互联网 发布:mac iphoto照片在哪里 编辑:程序博客网 时间:2024/05/03 10:54
#include "StdAfx.h"
#include "./stringchang.h"
CStringChang::CStringChang(void)
{
}
CStringChang::~CStringChang(void)
{
}
// 将字符串转换为16进制,俩个字符间插入了一个空格
int CStringChang::String2Hex(CString str, CByteArray& senddata)
{
int hexdata, lowhexdata;
int hexdatalen = 0;
int len = str.GetLength();
senddata.SetSize(len/2);
for (int i = 0; i < len; )
{
char lstr, hstr = str[i];
if (hstr == ' ') //如果遇到空格则跳过
{
i++;
continue;
}
i++;
if (i >= len)
break;
lstr = str[i];
if ((hexdata = ConvertHexChar(hstr)) == -1)
{
AfxMessageBox("输入字符超出16进制范围,无法按16进制正常发送",MB_ICONERROR); //将高字符转换为16进制字符
return -1;
}
if ((lowhexdata = ConvertHexChar(lstr)) == -1) //再将低字符转换为16进制字符
{
AfxMessageBox("输入字符超出16进制范围,无法按16进制正常发送",MB_ICONERROR); //将高字符转换为16进制字符
return -1;
}
if ((hexdata ==16) || (lowhexdata == 16))
break; //如果这俩个字符中任意一个大于16则跳出
else
hexdata = hexdata*16 + lowhexdata; //否则把俩个字符叠加
i++;
senddata[hexdatalen] = (char)hexdata; //保存到要发送的缓冲区中
hexdatalen++;
}
senddata.SetSize(hexdatalen);
return hexdatalen;
}
// 将一个字符转换为相应的十六进制
char CStringChang::ConvertHexChar(char ch)
{
if ((ch >= '0') && (ch <= '9'))
return ch - 0x30;
else if ((ch >= 'A') && (ch <= 'F'))
return ch - 'A' + 10;
else if ((ch >= 'a') && (ch <= 'f'))
return ch - 'a' + 10;
else
return (-1);
}
//可打印字符串转换为字节数据
// 如:"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01}
// 输入: pSrc 源字符串
// 输出: pDst 字节数据
// 返回: 字节数据长度
int CStringChang::String2Bytes(const char* pSrc, int nSrcLength, unsigned char* pDst)
{
for (int i = 0; i < nSrcLength; i += 2)
{
// 输出高4位
if ((*pSrc >= '0') && (*pSrc <= '9'))
{
*pDst = (*pSrc - '0') << 4;
}
else
{
if ((*pSrc >= 'a') && (*pSrc <= 'f'))
{
*pDst = (*pSrc - 'a' + 10) << 4;
}
else
{
*pDst = (*pSrc - 'A' + 10) << 4;
}
}
pSrc++;
// 输出低4位
if ((*pSrc>='0') && (*pSrc<='9'))
{
*pDst |= *pSrc - '0';
}
else
{
if((*pSrc >= 'a') && (*pSrc <= 'f'))
{
*pDst |= *pSrc - 'a' + 10;
}
else
{
*pDst |= *pSrc - 'A' + 10;
}
}
pSrc++;
pDst++;
}
return (nSrcLength)/2;
}
// 两个字节高地位转换
unsigned short CStringChang::lowhigh(unsigned short* pRes)
{
int highbt = *pRes<<8;
int lowbt = *pRes>>8 ;
short highlow = highbt | lowbt;
return highlow;
}
// 字节数据转换为可打印字符串
// 如:{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} --> "C8329BFD0E01"
// 输入: pSrc - 源数据指针
// nSrcLength - 源数据长度
// 输出: pDst - 目标字符串指针
// 返回: 目标字符串长度
int CStringChang::Bytes2String(const unsigned char* pSrc, int nSrcLength, char* pDst)
{
const char tab[]="0123456789ABCDEF"; // 0x0-0xf的字符查找表
for (int i = 0; i < nSrcLength; i++)
{
*pDst++ = tab[*pSrc >> 4]; // 输出高4位
*pDst++ = tab[*pSrc & 0x0f]; // 输出低4位
pSrc++;
}
// 输出字符串加个结束符
*pDst = '/0';
// 返回目标字符串长度
return (nSrcLength * 2);
}
- 字符转换MFC
- MFC 字符类型转换
- MFC中的字符类型转换
- MFC中字符之间转换
- MFC中各种字符转换
- MFC常用字符编码转换
- ATL 和 MFC 字符转换宏
- MFC下各种字符结构的转换
- Thinking in MFC---Unicode字符转换
- MFC 字符(串)间的转换
- mfc 字符总结,char* cString相互转换
- MFC中字符间相互转换总结
- MFC中整型与字符型的相互转换
- MFC中CString用于转换的格式字符
- WTL/MFC多字节和Unicode字符转换
- MFC下宽字符与多字符的转换
- WTL/MFC多字节和Unicode字符转换
- MFC中ANSI与Unicode字符转换最简单方法
- Java学习从入门到精通-过程篇
- MDI发送消息
- sports
- sports
- Log4配置和用法
- 字符转换MFC
- 我的心情
- JSP页面不能刷新、防止刷新的问题总结
- 使用Sharepoint的user/group管理用户
- 显卡之黄金宝典(转东转西)
- .net 下用javascript调用webservice
- Java 环境配置(包括了JDBC,JFreeChart和Tomcat)
- Conditioned Reflex
- 优化数据库前,问自己10个问题