已知:
CString strTemp;
通过UpdateDate()与程序中的一Edit框相关联。
问题:
想要使Edit框中的以十六进制输入的String,变成“真正的”十六进制的String
举个例子:
Input:"40 41 42 43"
则
Output:strTemp="\x40\x41\x42\x43"
即strTemp = "ABCD"不知道大家理解了没?
谢了。
CString strTemp;
通过UpdateDate()与程序中的一Edit框相关联。
问题:
想要使Edit框中的以十六进制输入的String,变成“真正的”十六进制的String
举个例子:
Input:"40 41 42 43"
则
Output:strTemp="\x40\x41\x42\x43"
即strTemp = "ABCD"不知道大家理解了没?
谢了。
解决方案 »
- TextOut第三个参数格式转换问题
- 为什么我的VC有问题
- 为什么我的ComboBox下拉菜单只能显示一行啊,其他的只能点击右边上下翻页来显示
- 如何把图片保存到数据库中?
- 高分求意见:选择windows平台还是unix/linux呢?
- dll输出函数调用,显示 too many actual parameters
- @@@@@@@@@怎样在一个试图中向两个表添加数据??????????&&&&&&&&&&&
- 怎么将DEBUG版变成RELEASE版?
- 请教一个调用UnhookWindowsHookEx()的问题
- 求教,SocketServer无法有效监听TCP工具发出的请求。
- 怎么远程控制关机、注销和重启
- 请问如何实时获取本机发送或接收到的 IP 数据包
其实你只需要做一下字符串的转换就可以了
Input:"40 41 42 43"
UpdateDate()后,strTemp = "40 41 42 43"
你现在只需要完成strTemp 到strOut="\x40\x41\x42\x43"的转换。
实现起来应该不难吧
sprintf(str,"%x%x%x%x",a,b,c,d);
d大概意思
sprintf(str,"%c%c%c%c",a,b,c,d);
大概意思
{
CString ret;
cs.Replace(" ","\\x");
ret = "\\x" + cs;
return ret;
}
这样的转换之后,strOut="\x40\x41\x42\x43"。
但是不等于 strOut="ABCD"。
strOut还是等于"\x40\x41\x42\x43",没有转换。
int iValue,iPos,iStart = 0;
while(iPos = Input.Find(" ",iStart)+1)
{
Temp = "0x";
sscanf(Temp+Input.Mid(iStart,iPos-iStart-1),"%x",&iValue);
Temp.Format("%c",iValue);
Output += Temp;
iStart = iPos;
}
Temp = "0x";
sscanf(Temp+Input.Mid(iStart),"%x",&iValue);
Temp.Format("%c",iValue);
Output += Temp;
char Input[]="40 41 42 43";
char seps[] = " ,\t\n";
char* token = strtok( Input, seps );
int iAscii;
while( token != NULL )
{
sscanf(token ,"%x", &iAscii);
strTemp += iAscii;
token = strtok( NULL, seps );
}