首页
社区
课程
招聘
[原创]无聊看到的顺手写了个字符串转数字的代码
发表于: 2011-11-17 18:39 5737

[原创]无聊看到的顺手写了个字符串转数字的代码

2011-11-17 18:39
5737
http://bbs.pediy.com/showthread.php?t=128615
这位面试的兄弟,哈哈,估计题目没看仔细吧? 我就直接show代码了,不考虑意外和溢出啥的
TX招我吧 哈哈~~~
int _hex2int(char* lpStr)
{
	unsigned int ret = 0;
	
	do {
		unsigned char c = *lpStr;
		ret = ret << 4;
		if (c >= 'a' && c <= 'f'){
			ret += 10 + c - 'a';
		} else if (c >= 'A' && c <= 'F'){
			ret += 10 + c - 'A';
		} else if (c >= '0' && c <= '9'){
			ret += c - '0';
		} else {
			printf("error _hex2int\n");
			break;
		}		
	} while(*++lpStr);

	printf("\n%x %d\n", ret, ret);

	return ret;
}

void _int2str(unsigned int i)
{
	char fmt[16] = {0};
	int bit_pos = 0;
	do {
		fmt[14 - bit_pos] = '0' + (i % 10);
		bit_pos++;
		i = i/10;
	} while(i);
	
	printf("%s\n", fmt + 15 - bit_pos);
}

int main(int argc, char** argv)
{
	char test[] = "1a12fa";
	_int2str(_hex2int(test));
}


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 6
支持
分享
最新回复 (4)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
先坐上沙发!!!
2011-11-17 21:16
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1个字符串如12345(这个字符串是十六进制的)用汇编转传化成十进制。
你也冲动了吧,要求是汇编转化哟!!!
2011-11-17 21:42
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
4
这个汇编不会手工哦,不过应该也不难把C转换为汇编吧
2011-11-17 21:44
0
雪    币: 128
活跃值: (27)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
补一个

char *_int2hex(int i)
{
	static char h[] = "0123456789abcdef";
	static char s[32];
	unsigned long val = i;
	char *p = &s[31];
	*(--p) = 0;
	do
	{
		*(--p) = h[val % 16];
		val /= 16;
	}while (val && p>=s);

	return p;
}


写完发现lz的遇到负数会不会杯具呢
2011-11-18 14:10
0
游客
登录 | 注册 方可回帖
返回
//