免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 14781 | 回复: 10
打印 上一主题 下一主题

[算法] 请问怎么把16进制转换为10进制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-14 13:00 |只看该作者 |倒序浏览
5可用积分
我有四个连续字节的16进制数 0x00 0x00 0x00 0x0e, 那么怎么把他们串在一起如变成0x0000000e然后化为int呢,谢谢

论坛徽章:
0
2 [报告]
发表于 2008-08-14 13:07 |只看该作者
#include<iomanip.h>这个头文件里面直接包含了16进制转换为10进制

不需要函数

#include<iostream.h>
#include<iomanip.h>
//16进制转10进制的程序
void main()
{int i
cout<<"请输入16进制数:";cin>>hex>>i;
cout<<"转为10进制:"<<i<<endl;
}

论坛徽章:
0
3 [报告]
发表于 2008-08-14 13:38 |只看该作者
作位运算

论坛徽章:
0
4 [报告]
发表于 2008-08-14 13:55 |只看该作者

回复 #1 kimnan 的帖子

如果没玩过字符串转整数,试试glibc 提供的 strtol

论坛徽章:
0
5 [报告]
发表于 2008-08-14 14:10 |只看该作者
四个连续字节的16进制数 0x00 0x00 0x00 0x0e

直接强制转化成 int

char ch[4]={0x0a,0x01,0x02,0x0e};
int* p = (int*)ch;
printf("%x\n",*p);

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
6 [报告]
发表于 2008-08-14 15:52 |只看该作者
原帖由 kimnan 于 2008-8-14 13:00 发表
我有四个连续字节的16进制数 0x00 0x00 0x00 0x0e, 那么怎么把他们串在一起如变成0x0000000e然后化为int呢,谢谢



>> 四个连续字节的16进制数 0x00 0x00 0x00 0x0e, 那么怎么把他们串在一起如变成0x0000000e
这个由自己完成吧,不复杂的。


十六进制字符串转换为int,使用函数strtol即可。
long strtol(const char *restrict str, char **restrict endptr, int base);

如:
int n = strtol(szHex, NULL, 16);

论坛徽章:
0
7 [报告]
发表于 2008-08-14 17:27 |只看该作者
感觉这种问题问的莫名其妙:在计算机内部存储的都是二进制形式,如果不打印出来,根本不存在格式转换的问题。

如果只是输出,那么所谓的转换只是选择不同的格式打印而已。

论坛徽章:
0
8 [报告]
发表于 2008-08-14 17:35 |只看该作者
atoi函数好像可以

论坛徽章:
0
9 [报告]
发表于 2008-08-14 17:35 |只看该作者
假设BYTE BUFFER[20]里存放了20个字节的数据。  
比如BUFFER里的数据可能是0x3B 0x6F 0x00 0x00 0x56 ……  
现在需要把BUFFER里的数据以3B6F000056…的形式打印在屏幕上。
请问怎么用C实现?

#include <stdio.h>

int main()
{
    unsigned char buff[] = {0x3B, 0x6F, 0x00, 0x00, 0x56};
    int    i;
    for (i = 0; i < sizeof(buff)/sizeof(unsigned char); ++i)
        printf("%02X", buff);
    return 0;
}

论坛徽章:
0
10 [报告]
发表于 2008-08-14 17:42 |只看该作者
你若想变成int,使用sprintf写到字符串里,再转换一下就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP