16进制字符串 转换成数字的问题
答案:2 悬赏:0
解决时间 2021-02-11 19:46
- 提问者网友:对着我说爱我
- 2021-02-11 14:18
16进制字符串 转换成数字的问题
最佳答案
- 二级知识专家网友:怪咖小青年
- 2021-02-11 15:11
如果出现以下情形之一,则抛出 NumberFormatException 类型的异常:
1.第一个参数是 null 或零长度的字符串。
2.radix 小于 Character.MIN_RADIX 或者大于 Character.MAX_RADIX。
3.任何字符串的字符都不是指定基数的数字,除非第一个字符是减号 '-' ('\u002d'),假定字符串的长度大于 1。
4.字符串表示的值不是 long 类型的值。
long的取值范围:-9223372036854775807 ~ 9223372036854775808
小于ffffffffffffffff的值 显然无法转换了
1.第一个参数是 null 或零长度的字符串。
2.radix 小于 Character.MIN_RADIX 或者大于 Character.MAX_RADIX。
3.任何字符串的字符都不是指定基数的数字,除非第一个字符是减号 '-' ('\u002d'),假定字符串的长度大于 1。
4.字符串表示的值不是 long 类型的值。
long的取值范围:-9223372036854775807 ~ 9223372036854775808
小于ffffffffffffffff的值 显然无法转换了
全部回答
- 1楼网友:晨与橙与城
- 2021-02-11 15:38
http://zhidao.baidu.com/question/122708801.html
#include <stdio.h>
#include <string.h>
int str2hex(const char *ch)
{
int i=0, tmp, result=0;
for(i=0; i<strlen(ch); i++)
{
if((ch[i]>='0')&&(ch[i]<='9'))
tmp = ch[i]-'0';
else if((ch[i]>='a')&&(ch[i]<='f'))
tmp = ch[i]-'a'+10;
else if((ch[i]>='a')&&(ch[i]<='f'))
tmp = ch[i]-'a'+10;
else
return -1;
result = result*16+tmp;
}
return result;
}
int main(void)
{
char ch[] = "499602d2";
char bufdec[10];
char bufhex[10];
int i=0;
i = str2hex(ch);
sprintf(bufdec, "%d", i);
sprintf(bufhex, "%x", i);
printf("dec=%s,hex=%s\n", bufdec, bufhex);
printf("i=%d=%x", i, i);
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯