C语言 如何将16进制形式的字符串,转化为相同的16进制的整型?

如何将16进制形式的字符串,转化为相同的16进制的整型。例如:"0x123"的字符串转化为16进制也为0x123。... 如何将16进制形式的字符串,转化为相同的16进制的整型。

例如:"0x123"的字符串转化为16进制也为0x123。
展开
 我来答
听不清啊
高粉答主

2021-03-14 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
如何将16进制形式的字符串,转化为相同的16进制的整型,这个问题,如果是在输出端而言,这本身是不存在的问题。因为要输出十六进制的数,本身就是输出一个字符串,完全不需要转换的。
如果是要转换为在计算机内存储的变量的值,则是提问者对计算机的原理不理解。计算机中所有的数都是以二进制形式存储,才能直接进行计算的。如果是要把十六进制的字符串,转换为数值形式,实际上是转换为十进制值(计算机以二进制存储,十六进制形式是程序员为简便而产生的,它是二进制表示的另一种形式),可以以下面的代码实现:
int str2int(char s[])
{int i,f;
for(i=f=0;s[i];i++)
if(s[i]>='0'&&s[i]<='9')f=f*16+s[i]-'0';
else if(s[i]>='a'&&s[i]<='f')f=f*16+s[i]-87;
else if(s[i]>='A'&&s[i]<='F')f=f*16+s[i]-55;
else return f;
}
追问
你这样只是把代码中字符串“0x123”变成了123 虽然这也是16进制 但是没有0x ,然后把你转化后的数给i,在代码中i=123,它会以十进制给i,虽然给i的只是一个数,存储来说都是二进制,但这里i的大小就是10,也就是0xa,这和所需求的0x123就不符了。 ***需求为:“0x123转换为在计算机内存储的变量的值,但是这里并不是要存”0x123“字符串的值,而是存0x123的值。
追答
我的程序并不是把"0x123"变为123,而是变为0x123的等值十进制值291。因为它在计算机内存储的就是i=291的二进制值,只是在输出时,如果规定以printf("0x%x",i);就会得到输出0x123。
参观西湖
2021-03-14 · 古籍有很多,写出来一起欣赏。
参观西湖
采纳数:919 获赞数:2305

向TA提问 私信TA
展开全部
整形就是整数,不分几进制。
几进制只是常量书写形式而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式