精华内容
下载资源
问答
  • C语言实现16进制数与10进制数的转化

    千次阅读 2020-04-09 10:41:19
    C语言实现16进制数与10进制数的转化 这里有两种情况: ①第一种情况:如果我得到的是一个16进制数,我通过肉眼看到的就是16进制显示(这里看到的肯定打印结果),比如85,我知道这个数是16进制,但是代码里面却不是...

    C语言实现16进制数与10进制数的转化

    这里有两种情况:

    ①第一种情况:如果我得到的是一个16进制数,我通过肉眼看到的就是16进制显示(这里看到的肯定打印结果),比如85,我知道这个数是16进制,但是代码里面却不是,在内存空间里却是按照int类型10进制进行存储的。需要将它在内存空间里面也转化为16进制的存储。

    #include <stdio.h>
    #include <stdint.h>
    
    int main() {
    	uint8_t str[6] = {0};
    	uint8_t num_16 = 0;
    	uint32_t num = 85;
        printf("%7cDEC  HEX \r\n", '\0');
    	printf("num    %3d  %3x\r\n", num, num);
    	int temp = 0;
    	sprintf((char *)str, "%d", num);
    	sscanf((char *)str, "%x", &temp);
    	num_16 = temp;
    	printf("num_16 %3d  %3x\r\n", num_16, num_16);
    
        return 0;
    }
    

    运行结果:

           DEC  HEX 
    num     85   55
    num_16 133   85
    

    上述10进制存储的16进制数85就转化成了16进制存储的16进制数85。**此时,经过此转换的数大小已经变了,它们大小是不相等的。**同理可以将16进制转换为10进制数。

    ②第二种情况:在第一种情况下,我是将肉眼看到的16进制数(为什么这么说呢?本来我是存储的10进制数,在经过系统或者某段代码的转化后,显示给我的是16进制结果,我看到的结果没有变化,但是在内存空间已经发生变化了。)转化为10进制数 。这里经过系统或者某段代码进行转换的过程就是第二种情况:**10进制到16进制的转换,但是并不会改变值,但是打印出来的记过是已经改变了,如果我要使用这个结果就得通过第一种情况进行转化。

    这种转化非常的简单:

    printf("%x", num);
    

    格式化打印,会自动将结果转化为16进制。如果想要将结果进行存储,可参考第一种情况,直接将上述的sprintfsscanf中的格式化参数%d%x交换即可。

    展开全文
  • /*// C prototype : void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)// parameter(s): [OUT] pbDest - 输出缓冲区// [IN] pbSrc - 字符串// [IN] nLen - 16进制数的字节数(字符串的... 将字符串转化16进制数...

    /*

    // C prototype : void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)

    // parameter(s): [OUT] pbDest - 输出缓冲区

    // [IN] pbSrc - 字符串

    // [IN] nLen - 16进制数的字节数(字符串的长度/2)

    // return value:

    // remarks : 将字符串转化为16进制数

    */

    void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)

    {

    char h1,h2;

    BYTE s1,s2;

    int i;

    for (i=0; i

    {

    h1 = pbSrc[2*i];

    h2 = pbSrc[2*i+1];

    s1 = toupper(h1) - 0x30;

    if (s1 > 9)

    s1 -= 7;

    s2 = toupper(h2) - 0x30;

    if (s2 > 9)

    s2 -= 7;

    pbDest[i] = s1*16 + s2;

    }

    }

    /*

    // C prototype : void HexToStr(BYTE *pbDest, BYTE *pbSrc, int nLen)

    // parameter(s): [OUT] pbDest - 存放目标字符串

    // [IN] pbSrc - 输入16进制数的起始地址

    // [IN] nLen - 16进制数的字节数

    // return value:

    // remarks : 将16进制数转化为字符串

    */

    void HexToStr(BYTE *pbDest, BYTE *pbSrc, int nLen)

    {

    char ddl,ddh;

    int i;

    for (i=0; i

    {

    ddh = 48 + pbSrc[i] / 16;

    ddl = 48 + pbSrc[i] % 16;

    if (ddh > 57) ddh = ddh + 7;

    if (ddl > 57) ddl = ddl + 7;

    pbDest[i*2] = ddh;

    pbDest[i*2+1] = ddl;

    }

    pbDest[nLen*2] = '\0';

    }

    展开全文
  • C语言 十进制 转化16进制

    千次阅读 2018-09-12 20:47:45
    C语言中的itoa函数 , /Ê®½øÖÆת»¯ÎªÊ®Áù½øÖÆ/ uint8_t itoa(int num,uint8_t str,int radix) { uint8_t index[]=”0123456789ABCDEF”; unsigned unum; int i=0,j,k; if...
    C语言中的itoa函数  ,
    /**Ê®½øÖÆת»¯ÎªÊ®Áù½øÖÆ**/
    uint8_t *itoa(int num,uint8_t* str,int radix)
    {
    	uint8_t index[]="0123456789ABCDEF";
    	unsigned unum;
    	int i=0,j,k;
    	if(radix==10&&num<0)/*?????*/
    	{
    		unum=(unsigned)-num;
    		str[i++]='-';
    	}
    	else unum=(unsigned)num;/*????*/
    	do
    	{
    		str[i++]=index[unum%(unsigned)radix];
    		unum/=radix;
    	}	
    		while(unum);
    		str[i]='\0';
    	if( str[0]=='-')k=1;/*+??-?*/
    	else k=0;
    	char temp;
    	for(j=k;j<=(i-1)/2;j++)
    	{
    		temp=str[j];
    		str[j]=str[i-1+k-j];
    		str[i-1+k-j]=temp;
    	}
    	return str;
    }
    
    使用的时候,一定 要注意,
    		 i++;
    		 itoa(i,data2,10);
    		 //10千万不要忘了 ,10 代表的是 将10进制转化为至六进制
    
    展开全文
  • C语言编写的16进制与10进制转化程序//返回16进制字符串s对应的整数值,遇到任何一个非法字符都返回-1。 int HexToDec(char *s){char *p = s;//空串返回0。if(*p == '\0')return 0;//忽略开头的'0'字符while(*p == '0...

    C语言编写的16进制与10进制转化程序

    //返回16进制字符串s对应的整数值,遇到任何一个非法字符都返回-1。 int HexToDec(char *s)

    {

    char *p = s;

    //空串返回0。

    if(*p == '\0')

    return 0;

    //忽略开头的'0'字符

    while(*p == '0')

    p++;

    int dec = 0;

    char c;

    //循环直到字符串结束。

    while(c = *p++)

    {

    //dec乘16

    dec <<= 4;

    //数字字符。

    if(c >= '0' && c <= '9')

    {

    dec += c - '0';

    continue;

    }

    //小写abcdef。

    if(c >= 'a' && c <= 'f')

    {

    dec += c - 'a' + 10;

    continue;

    }

    //大写ABCDEF。

    if(c >= 'A' && c <= 'F')

    {

    dec += c - 'A' + 10;

    continue;

    }

    //没有从任何一个if语句中结束,说明遇到了非法字符。 return -1;

    }

    //正常结束循环,返回10进制整数值。

    return dec;

    展开全文
  • 1.我们首先学习进制,因为计算机跟人的思想不一样,它只能识别0跟1.那么什么是进制呢?我们用阿拉伯数字0,1,2.....9当到9了,下一个数字就是9...十进制如果转化为二进制,让十进制除以2倒取余。这样就可以转化为二进...
  • 进制的转换看这篇文档>...我这里不说了 编程序实现如下功能:输入一个正的十进制纯小数和一个表示进制的整数n(n<10),然后将这个十进制纯小数...若不能精确转换,则保留16位小数。 `#include<stdio.h> #in
  • 有3种方式实现,其中两种是使用系统函数,另一种是直接自己编写。使用系统函数实现要加入#include ,自己编写则不需要这个头文件。下面的代码就是3种方式的实现,包括2位的...value是要转化的数字,str是转化后的...
  • /*// C prototype : void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)// parameter(s): [OUT] pbDest - 输出缓冲区// [IN] pbSrc - 字符串// [IN] nLen - 16进制数的字节数(字符串的... 将字符串转化16进制数...
  • //由于转化16进制数需要字母映射,这里不考虑 //这里只将10进制转成1~10进制 #include <stdio.h> int main() { printf("进制转化,支持10进制转2进制,10进制转8进制,10进制转16进制!\n"); printf("请...
  •  给定n个十六进制正整数,输出它们对应的八进制数。 输入格式  输入的第一行为一个正整数n (1)。  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不...
  • 本文参考:...计算机中存储、处理、运算的数据通常是8位、16位、32位或64位的,这里以最简单的8位为例讲解。注意符号位是包含在8位中的其中1位,故可直观读出的数只有7位(只有后7位数可以按权...
  • 把r进制装换成十进制2进制,该数值从个位依次 * 2的0次方,*2的1次方,*2的2方,……其他进制也一样的方法3,十进制转换成r进制方法 : 除r取余,直至商为0,余数倒叙排列练习:十进制的1000转化16进制是多少?...
  • #define const 字符串常量1 8 10 16 进制转换sizeof关键字变量 int folat char类型限定 const volatile register输入输出 printf scanf运算符 = + - * / % += -= *= /= %= ++ -- , 运算符优先级代码块{}类型转换1...
  • C语言进制转化为十六进制 问题描述: 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,...
  • 1、二进制数、八进制数、十六进制数转十进制数有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。个位,N=1;十位,N=2...举例:110B=1*2的2...
  • 计算机通讯协议中,会遇到返回信息中,4个整型数字组合代表一个浮点数,本案例是通过位运算将4个整型组合转化成浮点数。
  • C语言16进制字符串转化成字符串的方法。100分!我有一段类似这样的字符串:"7C7C307C724C7C267C7C7C7C7C3A7C417C7C7"其中每两位两位的代表一个字符,类似:“7C”对应“|”、“24”对应“$”、“41”对应“A”、...
  • C语言 :如何将16进制形式的字符串,转化为相同的16进制的整型。存储概念功能实现 存储概念 计算机中所有的数都是以二进制形式存储。 功能实现 这里提供两种实现方式 1:利用sscanf()函数 #include <stdio.h&...
  • 本题要求实现一个将长整数转化16进制字符串的简单函数。 函数接口定义: void f( long int x, char *p ); 其中x是待转化的十进制长整数,p指向某个字符数组的首元素。函数f的功能是把转换所得的16进制字符串写入...
  • c语言中输出8进制数,16进制

    万次阅读 2019-01-15 19:56:45
    在初学c语言时,我们会碰到关于8进制,16进制转化的问题,在这里,提供一个简单的方法: 在c语言中,我们是可以直接将10进制数转换为8进制,16进制的。 如下图: 我们的输出结果为: 很轻松的就解决的这一类问题。...
  • 实验8-2-9 长整数转化16进制字符串 (15分) 本题要求实现一个将长整数转化16进制字符串的简单函数。 函数接口定义: void f( long int x, char *p ); 其中x是待转化的十进制长整数,p指向某个字符数组的首元素。...
  • char str[10]="153"; 字符串如何转化16进制
  • /*// C prototype : void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)// parameter(s): [OUT] pbDest - 输出缓冲区// [IN] pbSrc - 字符串// [IN] nLen - 16进制数的字节数(字符串的... 将字符串转化16进制数...
  • 16进制字符串值转换为 in
  • C语言实现将十进制转化为二进制,并统计转换后的二进制码中1的个数。 #include int binaryNum[16]; //存放转换后得到的二进制码 int count=0; //计数十进制整数被2除的次数 int oneCount=0; //得到的二进制码中1...
  • 你可以设置一个字符串数组char HEX[16] = {'0', '1', '2', 3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}以后你得出的数字,比如余数y是10,那么HEX[y]打印出来就是A了例子(现写的)int now;...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 159
精华内容 63
关键字:

c语言转化16进制

c语言 订阅