练习2-3 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的整形值。字符串中允许包含的数字包括:0 ~ 9, a ~ f,A ~ F。

原创 2016年08月31日 15:12:17

练习2-3 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的整形值。字符串中允许包含的数字包括:0~9,a~f,A~F。


参考代码:

#include<stdio.h>
#define YES 1
#define NO 0

//htoi: covert hexadecimal string s to interger
int htoi(char s[])
{
    int hexdigit, i, inhex, n;

    i = 0;
    if(s[i] == '0') //skip optional 0x or 0X
    {
        ++i;
        if(s[i] == 'x' || s[i] == 'X')
        {
            ++i;
        }
    }
    n = 0;  //interger value to be returned
    inhex = YES;    //assume valid hexadecimal digit
    for( ; inhex == YES; ++i)
    {
        if(s[i] >= '0' && s[i] <= '9')
            hexdigit = s[i] - '0';
        else if(s[i] >= 'a' && s[i] <= 'f')
            hexdigit = s[i] - 'a' + 10;
        else if(s[i] >= 'A' && s[i] <= 'F')
            hexdigit = s[i] - 'A' + 10;
        else
            inhex = NO;  //not a valid hexadecimal digit
        if(inhex == YES)
            n = 16 * n + hexdigit;
    }
    return n;
}
int main()
{
    char s[] = "0xfff23";
    int n;
    n = htoi(s);
    printf("%d", n);
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

练习2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x 或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。

C语言程序设计(第二版) 练习2-3 个人设计练习2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~...

编写hoti(s),把由十六进制数字组成的字符串(0x或0X)转化为与之等价的整形值。字符串中允许包含的数字为:0-9,a-f或A-F。

#include #include #include/* Here's a helper function to get me around the problem of not * having...

并行口实现数字0~9、A~F、L、U、P、n总共19个键盘,将按键的结果用7段数码管(例如:7SEG-MPX-CA-BLUE)显示(可选——按键控制移位)出来

要求:掌握动态显示、动态扫描键盘的工作原理及硬、软件的设计、调试方法, 掌握80C51接口硬件电路设计方法及软件编程方法,了解80C51外部中断的使用和编程方法 电路图: #include #in...

解决检索 COM 类工厂中 CLSID 为 {96749377-3391-11D2-9EE3-00C04F797396} 的组件失败,异常0x80040154,没有注册类问题分析和解决办法

System.Runtime.InteropServices.COMException (0x80040154): 检索 COM 类工厂中 CLSID 为 {96749377-3391-11D2-...
  • wyx100
  • wyx100
  • 2015年02月07日 09:57
  • 20245

数学之美:平方根倒数速算法中的神奇数字 0x5f3759df

http://blog.jobbole.com/105295/?ref=myread 本文由 伯乐在线 - JLee 翻译,黄利民 校稿 英文出处:Christian ...

php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串

php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了。   数据库脚本: -- ---------------...
  • ljl_xyf
  • ljl_xyf
  • 2011年08月17日 16:59
  • 1063

analyse K9F2G08X0A nand flash

First. you need to know the G M KB B unit. 1G = 1024M 1M = 1024KB 1KB = 1024Byte, are not bits. whe...
  • wcqys
  • wcqys
  • 2017年02月15日 15:43
  • 141

输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形。 例如: 输入:3+8×2/9-2 输出:2

public class PracticeUtil { public static void main(String[] args) { String s = "3+8×2/9-2 "; int...

将数字字符串两位一组转换为16进制数

在串口通信编程中,经常要将
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:练习2-3 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的整形值。字符串中允许包含的数字包括:0 ~ 9, a ~ f,A ~ F。
举报原因:
原因补充:

(最多只允许输入30个字)