十六进制字符串 转换为 十进制

qjzrd 2012-06-14 06:56:37
如 十六进制字符串: 0812333230383032313936323033303932303132
转换为10进制

c++ 怎么实现 如果有中文呢
...全文
154 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fronz 2012-06-14
  • 打赏
  • 举报
回复
字符串数据和身份证编号相关
62年出生江苏 淮安 女性。额....不说了

楼主给出的数据是16进制的ASCII码字符串。
这种字串没可能出现中文,第一个字节未知,第二个字节表示后边身份证号码的字节数,后边身份证号码。

chun4221 2012-06-14
  • 打赏
  • 举报
回复
看不懂题目
deity110 2012-06-14
  • 打赏
  • 举报
回复
int ChangeNum(CString str,int length)

{

char revstr[16]={0};
int num[16]={0};
int count=1;
int result=0;
strcpy(revstr,str);
for (int i=length-1;i>=0;i--)
{
if ((revstr[i]>='0') && (revstr[i]<='9'))
num[i]=revstr[i]-48;//字符0的ASCII值为48
else if ((revstr[i]>='a') && (revstr[i]<='f'))
num[i]=revstr[i]-'a'+10;
else if ((revstr[i]>='A') && (revstr[i]<='F'))
num[i]=revstr[i]-'A'+10;
else
num[i]=0;
result=result+num[i]*count;
count=count*16;
}
return result;
}
int main()
{
CString str="0x11";//如:"0x11"
int n=0;
n=ChangeNum(str,str.GetLength());
printf("%d\n",n);
return 0;
}

zgl7903 2012-06-14
  • 打赏
  • 举报
回复
0x30 ~ 0x39 对应的就是 '0' ~ '9'
所以猜测一下 0x08表示某种标识 前面的0x12表示后面的数据个数 后面就是"320802196203092012"
gold_water 2012-06-14
  • 打赏
  • 举报
回复
字符集之间的转换吧;要看这个十六进制字符串表示的是什么内容;但是如果有中文,不知道如何转换为10进制,不理解什么意思。

16,471

社区成员

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

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

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