从文本框中得到CString strEdit="123456789101"; (strEdit长度不固定)怎样将strEdit 中的内容两位一字节存入 BYTE str[6]中,str[0]=01;str[1]=91.......如何实现,用CString函数处理,还是用char处理 ;
解决方案 »
- 用DoModal()显示的对话框如何在另一线程中强行关闭?
- 那位好心的大哥,帮帮我,怎么将MapInfo的输出的格式转换到ArcGIS当中??
- 普通的窗口和对话框有什么区别?
- 请教如何确定插入的设备是U盘
- 关于CString class menber
- QQ的聊天纪录存在MsgEx.db文件,但是打开是是乱码。谁知道用什么软件可以看呢??
- 如何在代码里判断工程中是否已经包含了“file1.h”???
- 一个菜鸟的问题??大家帮个忙!!Thanks!!
- 请教:在msdn中看到这样的定义方法,请问有什么好处吗?
- SetCapture和SetFocus的区别是什么,都用在什么地方?
- 谁有矢量图形系统开发资料
- 每次重新安装操作系统,都要下载更新补丁很麻烦。能不能将下载的补丁保存下来,下次装系统时再一次安装?
每取两位
atoi()即可
自己控制拷贝的位置
char ch[3]
还有一个指针char*
将指针知道末尾字符
然后向前移
这都是看得到的要不就从头至尾,只不过写进去的数祖是从后面开始写
long str2szByte(const CString& str,BYTE** szByte)
{
if (!szByte)return 0;
ASSERT(!(str.GetLength()%2)&&str.GetLength());
long size=str.GetLength()/2;
*szByte=new BYTE[size];
for (int i=0,j=0;j<size;i+=2,j++)
{
CString temp=str.Mid(i,2);
int vau=_ttoi(temp.GetString());
(*szByte)[j]=(BYTE)vau;
}
return size;}
//测试代码
CString str=TEXT("123456789011");
BYTE* szByte=NULL;
long size=str2szByte(str,&szByte);
BYTE test=szByte[size-1];
我是这样做的,用基本的函数;
char strTemp[13];
memset(strTemp,0,13);
sprintf(strTemp,"%s",m_MeterAddr); for(int i=0;i<6;i++)
{
if(strlen(strTemp)>=2)
{
task.pMeterPara->MeterAddr[i]=atoi(&strTemp[strlen(strTemp)-2]);
strTemp[strlen(strTemp)-2]='\0';
}
else if(strlen(strTemp)==1)
{
task.pMeterPara->MeterAddr[i]=atoi(&strTemp[strlen(strTemp)-1]);
strTemp[strlen(strTemp)-1]='\0';
}
else
{
task.pMeterPara->MeterAddr[i]=0;
}
}
BYTE byEdit[6];
CString strBuf = strEdit;
for (int i = strEdit.GetLength(),int j = 0; i>0 && j<6; j++,i-=2)
{
if (strBuf.GetLength()>=2)
byEdit[j] = _ttoi(strBuf.Right(2).GetBuffer(2));
else byEdit[j] = _ttoi(strBuf);
strBuf.Delete(i-2,2);
}
CString Src = "123456789101";
char tmp[12] = {0}; //末尾0
BYTE str[6] = {0};
int len = Src.GetLength(); memcpy(tmp, Src.GetBuffer(len), sizeof(tmp)); len /= 2;
for (int i = len - 1; i >= 0; i--)
{
const char ch = tmp[2*i]; //高位
const char cl = tmp[2*i + 1]; //低位
int h = atoi(&ch)* 10;
int l = atoi(&cl);
str[i] = h + l;
}