十六进制到10进制转换

自己感觉要解决的问题点:怎么接收输入的16进制的字符串"解决办法通过判断字符是否‘\n’"。

具体看下面代码,不是很好,但是水平有限。

#ifndef _SCALECONVERT_
#define _SCALECONVERT_
/*================================ Macros ===================================*/
#define FALSE 0
#define TURE 1
#define MAX_ARRAY 100  //允许接收的最大16进制的字符串
/*============================= Include Files ===============================*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
/*============================= Include Function ===============================*/

int scaleConvert(char *scaleArray16,int sizeArray);

#endif //_SCALECONVERT_
#include"scaleConvert.h"

/***********************************************************/
/************函数名:inputAndDetection**********************/
/************入口参数:16进制字符串*************************/
/************返回值:int类型********************************/
/************函数功能:输入十六进制数***********************/
/***********************************************************/
static int inputData(char *scaleArray16)
{
	int index = 0;
	char ch = 0;
	if(NULL == scaleArray16)
	{
		return FALSE;
	}
	printf("请输入要转换的16进制数:");
    while((ch = getchar()) != ‘\n‘)
	{
		scaleArray16[index] = ch;
		index++;
	}
	scaleArray16[index] = ‘\0‘;
	return TURE;
}
/***********************************************************/
/************函数名:scaleConvert***************************/
/************入口参数:16进制字符串*************************/
/************返回值:10进制数*******************************/
/************函数功能:将一个16进制字符转换成十进制*********/
/***********************************************************/
static int byteScaleConvert(char oneChar)   
{
	int returnValue = 0;
	if((oneChar >= ‘0‘)&&(oneChar <= ‘9‘))
	{
		returnValue = oneChar - ‘0‘;
	}
	else if((oneChar >= ‘a‘)&&(oneChar <= ‘f‘))
	{
		returnValue = oneChar - 87;
	}
	else if((oneChar >= ‘A‘)&&(oneChar <= ‘F‘))
	{
		returnValue = oneChar - 55;
	}
	return returnValue;
}
/***********************************************************/
/************函数名:scaleConvert***************************/
/************入口参数:16进制字符串*************************/
/************返回值:10进制数*******************************/
/************函数功能:16进制转10进制***********************/
/***********************************************************/
int scaleConvert(char *scaleArray16,int sizeArray)
{
	int scaleNumber10 = 0;
	int temp = sizeArray;
	if(NULL == scaleArray16)
	{
		return FALSE;
	}
	while(sizeArray>1)
	{
		scaleNumber10 += byteScaleConvert(scaleArray16[sizeArray])*pow(16,(temp-sizeArray));
		sizeArray--;
	}
	return scaleNumber10;//返回的十进制数
}
/***********************************************************/
/************函数名:main***********************************/
/************入口参数:无***********************************/
/************返回值:0**************************************/
/************函数功能:程序的如口***************************/
/**********************************************************/
int main()
{
	int index = 0;
	int sizeArray16 = 0;
	int scaleNumber10 = 0;
	char scaleArray16[MAX_ARRAY] = {0};
	inputData(scaleArray16);//输入16进制数
	sizeArray16 = strlen(scaleArray16)-1;//16进制字符串的长度-1
	scaleNumber10 = scaleConvert(scaleArray16,sizeArray16);//转换
	printf("%d",scaleNumber10);
	printf("\n");
	system("pause");
	return 0;
}
时间: 2024-12-05 04:29:55

十六进制到10进制转换的相关文章

Java 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换

public static void main(String[] args) { int i = 10; System.out.println("***********10进制转换2进制.8进制.16进制************"); System.out.println(Integer.toBinaryString(i)); // 10转换2进制 System.out.println(Integer.toOctalString(i)); // 10转换8进制 System.out.p

( 转)Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法

一.类型比较 bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据,存储大小为 8 个字节.一个字节就是8位,那么bigint就有64位 int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据,存储大小为 4 个字节.int类型,最大可以存储32位的数据 smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据,存储大小为 2 个

10进制转换成8进制

package cast; import java.util.Collections;import java.util.LinkedList;import java.util.List; public class Cast {    //测试    public static void main(String[] args) {        int a = Cast.castNum(100);        System.out.println(a);            }        

QT 16进制 ASII &nbsp; 10进制 转换

 //16进制字符串转字节数组     static QByteArray HexStrToByteArray(QString str)     {         QByteArray senddata;  //发送数据         int hexdata,lowhexdata;         int hexdatalen = 0;         int len = str.length();  //求出发送字符传唱度         senddata.resize(len/2); /

10进制转换2进制的互相转换

要从右到左用二进制的每个数去乘以2的相应次方例如:二进制数1101.01转化成十进制1101.01(2)=1*20+0*21+1*22+1*23 +0*2-1+1*2-2=1+0+4+8+0+0.25=13.25所以总结起来通用公式为:abcd.efg(2)=d*20+c*21+b*22+a*23+e*2-1+f*2-2+g*2-3或者用下面这种方法:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和.这种做法称为"按权相加"法.2的0次方是1(任何数的0次方都是1,0的0次方

十六进制内所有进制转换!!!!速度快,运算简单,java

import java.util.Scanner; public class P2031 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char chs[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//最大十六进制所有的数 while(sc.hasNext()){ int n = sc.n

64进制和10进制转换

class Program { static void Main(string[] args) { long val = 123456789; Console.WriteLine(Parse64Encode(val)); Console.WriteLine(Parse64Decode(Parse64Encode(val))); Console.ReadKey(); } private static char[] rDigits = { '0', '1', '2', '3', '4', '5',

Java中将10进制转换成16进制

import java.util.Scanner; public class Decimal2HexConversion {     public static void main(String[] args){         Scanner input = new Scanner(System.in);         System.out.print("输入一个十进制数: ");         int decimal = input.nextInt();         Sys

10进制转换成2、8、16进制の转换器

目前只能实现简单的功能 1 #include <stdio.h> 2 #include <limits.h> 3 #include <math.h> 4 #include <string.h> 5 #include <stdlib.h> 6 #include <ctype.h> 7 int size; 8 char string[CHAR_BIT * sizeof(int) + 1]; 9 void change_to_16(void