热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我无法理解字符串如何转换为整数的概念

如何解决《我无法理解字符串如何转换为整数的概念》经验,为你挑选了1个好方法。

我引用了一个时间转换程序,但无法理解代码的某些部分.这是完整的计划.

#include
#include

using namespace std;

int main() {
    string s;
    cin >> s;

    int n = s.length();
    int hh, mm, ss;
    hh = (s[0] - '0') * 10 + (s[1] - '0');
    mm = (s[3] - '0') * 10 + (s[4] - '0');
    ss = (s[6] - '0') * 10 + (s[7] - '0');

    if (hh <12 && s[8] == 'P') hh += 12;
    if (hh == 12 && s[8] == 'A') hh = 0;

    printf("%02d:%02d:%02d\n", hh, mm, ss);

    return 0;
}

我无法理解的代码部分是

    hh = (s[0] - '0') * 10 + (s[1] - '0');
    mm = (s[3] - '0') * 10 + (s[4] - '0');
    ss = (s[6] - '0') * 10 + (s[7] - '0');

提前致谢.



1> Some program..:

如果您看到例如此ASCII表(ASCII是最常用的字符编码方案),您可以看到该字符 '2'具有十进制值50,并且该字符'0'具有十进制值48.

考虑到一个字符只是一个小整数,我们可以对它们使用常规算术.这意味着如果你这样做'2' - '0',那就像50 - 48产生小数值那样2.

因此,要获取字符数字的十进制值,只需减去'0'.

乘法10是因为我们正在处理十进制系统,其中一个数字21是相同的2 * 10 + 1.


应该注意的是,C++规范明确规定所有数字都必须在一个连续的范围内编码,因此无论使用哪种编码都无关紧要.

您可能会看到这个"技巧"也用于获取字母的十进制值,但请注意C++规范没有说明任何内容.事实上,编码中的字母范围不是连续的,而且不起作用.它仅指定用于数字.


推荐阅读
author-avatar
shzq110_113
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有