导师作业:2、编写一个函数,将一个整数值转换为16进制表示的字符串。

//2、编写一个函数,将一个整数值转换为16进制表示的字符串。
//  (如将整数64,转换为字符串"40")
//Liwei_2
//11/5/2005 Sat.
#include "stdio.h"
void ChangeToHex1(char *str1,int dec_num1);//声明函数(按位实现)
void ChangeToHex2(char *str2,int dec_num2); //声明函数(按进制实现)

int main()
{
   long int dec_num;//定为32位
   char str[100];
   printf("Enter interger to change hex:/n");
   scanf("%d",&dec_num);
   ChangeToHex1(str,dec_num);
   ChangeToHex2(str,dec_num);
   return 0;
}

void ChangeToHex1(char *str1,int dec_num1)//整数值转换为16进制字符串的函数定义(按位运算来实现)
{
   char four_bit[8];
   int i=0,j=32; //j是位数计数器
   unsigned  int hex=0xF0000000;
   for(i=0;i<8;i++)
   {
     four_bit[i]=(dec_num1&hex)>>(j-=4); //从高位开始每次提取一位16进制字符
     hex=hex>>4; //每次右移4位
   }
   for(i=0;i<8;i++)
   {
     if(four_bit[i]<=9)
     str1[i]=four_bit[i]+'0'; //转化为16进制字符的
     else
     str1[i]=four_bit[i]-10+'A'; //A--F
   }
   str1[i]='/0';
   printf("Hex new String:/n%s", str1);
}

void ChangeToHex2(char *str2,int dec_num2) //整数值转换为16进制字符串的函数定义(按进制转换来实现)
{
   int i=0,j=0,temp;
   while(dec_num2)
   {
      temp=dec_num2%16;
      if(temp<=9)
      str2[i]=temp+48; //转化为16进制字符的0--9,'0'的ASCII为48
      else
      str2[i]=temp-10+65; //A--F
      dec_num2/=16;
      i++; //累计转换后的字符个数
   }//while
   printf("/nHex new String:/n");
   for(j=i-1;j>=0;j--) //输出
      printf("%c",str2[j]);
   printf("/n");
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值