菜鸟 字符转换问题

yichenwuheng 2006-04-19 10:29:00
我写了一个vc的MFC程序,由用户在文本框里输入区号和电话号码,把区号和电话号码经过如下处理('1'-->0x81,'2'-->0x82,........'0'-->0x8A,'#'-->0x8B,'*'--->0x8C)后 存入字节数组中,请教各位高人 如何进行处理啊??
...全文
243 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yichenwuheng 2006-04-19
  • 打赏
  • 举报
回复
谢谢 ifchen 和 njchf
一条晚起的虫 2006-04-19
  • 打赏
  • 举报
回复
char *tempNum=NULL; //动态数组保存文本框的区号
BYTE *RecNum=NULL; //保存转换过的区号
tempNum = m_szQH.GetBuffer(0)
m_szQH.ReleaseBuffer(); //这样转换就可以了
RecNum = (BYTE*)tempNum;

for (int i =0;i<=iTelQH;i++)
{
char a = tempNum[i];
Muf 2006-04-19
  • 打赏
  • 举报
回复
BYTE code[]={0x8B,0,0,0,0,0,0,0x8C,0,0,0,0,0,0x8A,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89};

然后:
编码 = code[字符 - '#'];
cici2006 2006-04-19
  • 打赏
  • 举报
回复
一是没有分配空间,
二是有溢出呀。
yichenwuheng 2006-04-19
  • 打赏
  • 举报
回复
执行到memcpy vc程序出现异常
84830388 2006-04-19
  • 打赏
  • 举报
回复
for (int i =1;i<=iTelQH;i++) {
char a = tempNum[i];
这个肯定有问题了。VC中数组下标是从0开始的!!!要记住。所以tempNum[iTelQH]肯定就溢出了。最后一个数组成员是 tempNum[iTelQH-1]
修改为:
for (int i =0;i<iTelQH;i++) {
char a = tempNum[i];
yichenwuheng 2006-04-19
  • 打赏
  • 举报
回复
长度是iTelQH 通过GetLength()得到的
yichenwuheng 2006-04-19
  • 打赏
  • 举报
回复
那如果我知道了长度 如何对tempNum和RecNum分配空间啊
njchf 2006-04-19
  • 打赏
  • 举报
回复
没有分配空间啊tempNum RecNum
lixiaosan 2006-04-19
  • 打赏
  • 举报
回复
如何处理?

你想怎么处理我们怎么知道
njchf 2006-04-19
  • 打赏
  • 举报
回复
char str[] = "01088888888";
byte array[11];
for (int i = 0; i < 号码字符串(str)长度; i++)
{
if (str[i] >= '1' && str[i] <= '9') array[i] = 0x80 | (str[i] - '0');
else if (str[i] == '0') array[i] = 0x8A;
else if (str[i] == '#') ...
}
yichenwuheng 2006-04-19
  • 打赏
  • 举报
回复
//将区号进行处理 区号
char *tempNum=NULL; //动态数组保存文本框的区号
char *RecNum=NULL; //保存转换过的区号
memcpy(tempNum,m_szQH,iTelQH); //将CString类型转为char*数组

//这里的代码有问题 操纵了未知的内存地址导致程序运行异常

for (int i =1;i<=iTelQH;i++) {
char a = tempNum[i];

switch(a)
{
case '1':
RecNum[i]=0x81;
break;
case '2':
RecNum[i]=0x82;
break;
case '3':
RecNum[i]=0x83;
break;
case '4':
RecNum[i]=0x84;
break;
case '5':
RecNum[i]=0x85;
break;
case '6':
RecNum[i]=0x86;
break;
case '7':
RecNum[i]=0x87;
break;
case '8':
RecNum[i]=0x88;
break;
case '9':
RecNum[i]=0x89;
break;
case '0':
RecNum[i]=0x8A;
break;
case '*':
RecNum[i] = 0x8B;
break;
case '#':
RecNum[i] = 0x8C;
break;
}

}
llreq.telnum.btel.bQH = RecNum;

各位大大看看这段代码哪里有问题呀 不胜感激
kugou123 2006-04-19
  • 打赏
  • 举报
回复
for(***)
{
switch(**)
{
*****
}
}

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧