linux下10进制16进制互转函数

转自:http://blog.chinaunix.net/uid-26520343-id-3211625.html

*

  * 17-May-2012 Auther.Zhang 0.0 Version
  * Copyright & the right of find interpretation auther
  * synopsis:特殊的进制转换
  *
  */
#include <stdio.h>
#include <stdlib.h>

typedef unsigned char Uchar; //1Byte
typedef unsigned short int Uint; //2Byte
typedef unsigned long Ulong; //4Byte


/****************************************************************
函数说明 :十进制转十六进制,字符转换不涉及数值大小,特殊用途
入口参数 :需要转换的十进制数
返回类型 :转换完成的十六进制数
初始时间 :2012-5-17 Lebaishi
修改记录 :
用途功能 :将十进制直接转换为十六进制,例如12直接转为0x12等
****************************************************************/
char Dec2hex(int dec_data) 
Uchar *s=malloc(10);
Ulong bcd_data;
sprintf(s,"%d",dec_data); //dec_data=12,s="12"
sscanf(s,"%x",&bcd_data);
free(s);
    return bcd_data; 


/****************************************************************
函数说明 :十六进制转十进制,字符转换不涉及数值大小,特殊用途
入口参数 :需要转换的十六进制数
返回类型 :转换完成的十进制数
初始时间 :2012-5-17 Lebaishi
修改记录 :
用途功能 :将十六进制直接转换为十进制,例如0x12直接转为12等
****************************************************************/
char hex2Dec(Uchar bcd_data) 
Uchar *s=malloc(10);
Ulong dec_data;
sprintf(s,"%x",bcd_data); 
sscanf(s,"%d",&dec_data);
free(s);
  return dec_data; 


/*****************  主函数 ******************/
int main()
{
char hex_dec=0;
char dec_hex=0;
hex_dec = Dec2hex(12);
printf("Dec2hex(12):\n");
printf("come in:12 Dec  output:%d\n",hex_dec);
printf("come in:12 Dec  output:%#x\n",hex_dec);
dec_hex = hex2Dec(0x12);
printf("hex2Dec(0x12):\n");
printf("come in:0x12    output:%d\n",dec_hex);
printf("come in:0x12    output:%#x\n,dec_hex");
return 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值