C语言实现字符串中(10进制和16进制)转成十进制数

如何将字符串中的10进制数和16进制数提取出来,看以下代码:

#include <stdio.h>
typedef char TUINT8 ;
typedef int  TUINT32;

TUINT32 Read_DecNumber(const TUINT8* str);
TUINT32 Read_HexNumber(const TUINT8* str); 

int main(void)
{
	int ret = Read_DecNumber("1000");
	int d = Read_HexNumber("A");
	printf("将字符串中的数字转化为10进制数 :%d\n",ret);
	printf("将字符串中的16进制数转化为10进制数 :%d\n",d);
	return 0 ;
}
//将字符串中的数字转化为10进制数
TUINT32 Read_DecNumber(const TUINT8* str)
{
    TUINT32 value;

    if (! str)
    {
        return 0;
    }
    value = 0;
    while ((*str >= '0') && (*str <= '9'))
    {
        value = value*10 + (*str - '0');
        str++;
    }
    return value;
}
//将字符串中的16进制数转化为10进制数
TUINT32 Read_HexNumber(const TUINT8* str)
{
    TUINT32 value;

    if (! str)
    {
        return 0;
    }
    value = 0;
    while (1)
    {
        if ((*str >= '0') && (*str <= '9'))
        {
            value = value*16 + (*str - '0');
        }
        else if ((*str >= 'A') && (*str <= 'F'))
        {
            value = value*16 + (*str - 'A') + 10;
        }
        else if ((*str >= 'a') && (*str <= 'f'))
        {
            value = value*16 + (*str - 'a') + 10;
        }
        else
        {
            break;
        }
        str++;
    }
    return value;
}

运行结果:

时间: 2024-09-20 06:11:40

C语言实现字符串中(10进制和16进制)转成十进制数的相关文章

java 10进制转16进制带ox格式输出

问题描述 java 10进制转16进制带ox格式输出 请教:java 怎么把10进制转16进制并且 带ox格式输出 如 60(10进制) 输出 : 0x00,0x00,0x00,0x3c 解决方案 如下代码: public static void main(String[] args) throws IOException { int num=3000; ByteArrayOutputStream baos=new ByteArrayOutputStream(); DataOutputStrea

进制转换-16进制转化为10进制问题

问题描述 16进制转化为10进制问题 16进制 (单字) fbb4 转化为10进制结果是 -1100 ,但 如果 是这样的,就转化 为10进制的就变成 64436了,请问一下这是什么原因?另外 ,我在网上查了一下,大都的转化的结果 都是64436,可我想要的结果 是-1100,请问这个要怎么算出来 解决方案 fbb4 变成二进制是 1111 1011 1011 0100 再计算规则上取后面1个半字节, 也就是 1011 1011 0100 就是你想要的结果-1100 解决方案二: 你应该是用那种

指针-新手OJ,C语言 去除字符串中的所有空格模块, 不知为何出错,求大神指点

问题描述 新手OJ,C语言 去除字符串中的所有空格模块, 不知为何出错,求大神指点 作用: 把数组a中的所有空格去除, 并把后面的往前移动.例如: a b c变成:abc 字符指针 *p *q 数组a[] for(p=&a[0]; p!=''; p++)if(*p==' ')for(q=p; *(q+1)!=''; q++)*q=(q+1); //去除a字符串中的空格 但总是不对, 求大神指点. 解决方案 #include<stdio.h>int main(){ char str[20

ios-iOS中怎么将#35b665(16进制)的颜色值赋给image,请大神帮忙

问题描述 iOS中怎么将#35b665(16进制)的颜色值赋给image,请大神帮忙 从网络端获得的image是透明的,同时得到了一个#35b665(16进制)的值,怎么给image赋上这个值 解决方案 (UIColor*) colorWithHex:(NSString *)hexValue alpha:(CGFloat)alphaValue { unsigned int red,green,blue; NSRange range; range.length = 2; range.locatio

sql-SQL 10进制转16进制 求解释

问题描述 SQL 10进制转16进制 求解释 SQL 10进制转16进制 求解释 在调查使用SQL进行10进制转35进制转化的资料时,找到如下SQL文. 经过运行确实能成转化,但小弟才疏学浅实在看不懂原理,请教各位大神帮忙解释一下 重要步骤的原理或目的. 谢谢!!!!!!! DECLARE @BASE_35 VARCHAR(100) DECLARE @BASE_10 INT SET @BASE_10 = '88' SET @BASE_35=N'' SELECT @BASE_35 = CASE W

关于2进制和16进制互转的一点思索

搞计算机的就必须碰2进制和16进制,谁叫计算机只认识 0 和 1 呢.... 之前对16进制转2进制的时候一直有点模糊,因为16进制可以一位抵2进制的4位 比如16进制的D8,就是2进制的 1101 1000,那就是D对应于 1101,8 对应于 1000... 稍微计算一下就知道,确实是对的,D对应于十进制的13,而13的二进制表示正是1101,为什么会恰好是16进制的一位对应2进制的4位呢? 因为 2^4==16 .仔细思考一下,如果我们把16进制和2进制都换成10进制来处理就清楚很多了,D

PHP中如何将ip地址转成十进制数

  PHP 中如何将ip地址转成十进制数呢?现在PHP中有很多时候都会用到ip地址,但是这个ip地址获取的时候都不是10进制的.那么PHP中如何将ip地址转成十进制数就是我们比较头疼的事情了,下面两种方法是我整理处理来相对比较简单的IP地址转成十进制数的方法.希望能对大家有所帮助. 方法一: 代码如下 public function ipToLong(){ $ip = $_SERVER['REMOTE_ADDR']; $ip = explode('.', $ip); $ip = array_re

c语言输出字符串中最大对称子串长度的3种解决方案_C 语言

问题描述: 输入一个字符串,输出该字符串中最大对称子串的长度.例如输入字符串:"avvbeeb",该字符串中最长的子字符串是"beeb",长度为4,因而输出为4. 解决方法:中序遍历 一,全遍历的方法: 1.全遍历的方法,复杂度O(n3); 2.遍历原字符串的所有子串,然后判断每个子串是否对称: 实现方法是:我们让一个指针i从头至尾遍历,我们用另一个指针j从j=i+1逐一指向i后面的所有字符.就实现了原串的所有子串的遍历(子串为指针i到j中间的部分);最后判断得到的

vb6 算法 进制-一个16进制算法问题 VB6 求大神

问题描述 一个16进制算法问题 VB6 求大神 有3个示例 不知道是什么算法转换出来 求大神 000000 加密成 649D976C775C 895C32 加密成 6BA39C967A56 FFFFFF 加密成 79B0AD798D6A 解决方案 这个恐怕有点难度喔,常用的加密算法一个一个试?也有可能是自定义的算法,那更不行了,就算要破解,就三个样本也不行哇,,,看看大神降临吧