首页
社区
课程
招聘
[求助]简单的C语言转换一时想不通请指教
发表于: 2019-6-13 23:36 3854

[求助]简单的C语言转换一时想不通请指教

2019-6-13 23:36
3854
unsigned char a[] = {0x34,0x35,0x36,0x37,0x39,0};    //45679
int b;
a[]中数据怎么转换后让b = 45679?

int c2d( unsigned char*a)
{
   a???
   ret b;  //45679
}


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 9626
活跃值: (1838)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
2
strtol 或 sscanf
2019-6-14 00:03
1
雪    币: 2822
活跃值: (154)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
试试 b = atoi(a); 看看
2019-6-14 00:05
1
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
DWORD StrToHex(const char    * str)
{
    DWORD    n = 0;
    char szNB[9] = {0};
    int iLen = strlen(str);
    if(str && iLen >=    1 && iLen <= 8 )
    {
        if (iLen < 8)
        {
            for (int i = 8-iLen; i; i--)
            {
                strcat(szNB,"0");
            }
            strcat(szNB,str);
        }
        else
        {
            strcpy(szNB,str);
        }
        for (int y = 28 , i = 0; y>=0; y -= 4 ,i++)
        {
            switch (szNB[i])
            {
            case '0':case '1':case '2':    case '3':case '4':case '5':case    '6':case '7':case '8':case '9':
                n |= (szNB[i] - '0')<< y;
                break;
            case 'A':case 'B':case 'C':case    'D':case 'E':case 'F':
                n |= (szNB[i] - '7')<< y;
                break;
            case 'a':case 'b':case 'c':case    'd':case 'e':case 'f':
                n |= (szNB[i] - 'W')<< y;
                break;
            }
        }
    }
    else
    {//这里应该用来处理除了0x开头的16进制字符串的情况。
        __asm int 3;
    }
    return n;
}
最后于 2019-6-14 00:19 被b23526编辑 ,原因:
2019-6-14 00:18
1
雪    币: 547
活跃值: (2200)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
谢谢了!!好好学习
2019-6-14 00:20
0
雪    币: 161
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
int c2d(unsigned char* a)
{
	int ret=0,i=0;
	unsigned char* s = a;
	s = s + strlen((const  char*)a)-1;
	while (s>=a)
	{
		ret *= 10;
		ret += ((*s) - '0');
		s--;
	}
	return ret;
}

最后于 2019-7-5 22:38 被miWusn编辑 ,原因:
2019-7-5 22:38
1
雪    币: 181
活跃值: (621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
0x34 不就是 4的 asl码吗 %x 和 %c啊
2019-7-5 23:03
0
雪    币: 161
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
柒雪天尚 0x34 不就是 4的 asl码吗 %x 和 %c啊
楼主是想转为DWORD,不只是输出
2019-7-8 10:04
0
雪    币: 4396
活跃值: (4383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
int c2d(char* a)
{
	char * pVal = NULL;
	int d = strtoul(a, &pVal , 10);
	return d;
}

//Test..............
void main()
{
	unsigned char a[] = { 0x34, 0x35, 0x36, 0x37, 0x39, 0 };    //45679
	int b = c2d((char *)a);
	printf("%d\n", b);
	getchar();
}


哇~~~  你们是用这么多代码炫富吗???  楼主的要求其实很简单.
2019-7-8 17:59
1
游客
登录 | 注册 方可回帖
返回
//