strtoll 介绍和举例

2024-09-02 02:12
文章标签 介绍 举例 strtoll

本文主要是介绍strtoll 介绍和举例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

strtoll 是 C 标准库中的一个函数,用于将字符串转换为长长整型(long long)。它可以处理任意基数的数字表示形式(比如十进制、十六进制等),并提供错误检查功能。strtoll 的原型定义在 <stdlib.h> 头文件中。

代码

以下是一个示例,展示如何使用 strtoll 将十六进制字符串转换为 long long 类型,并进行错误检查:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>int main() {const char *str = "7FFFFFFFFFFFFFFF"; // 十六进制字符串char *endptr;errno = 0; // 重置错误码// 使用 strtoll 将十六进制字符串转换为 long longlong long number = strtoll(str, &endptr, 16);// 检查错误if (errno == ERANGE) {if (number == LLONG_MAX) {printf("Overflow occurred\n");} else if (number == LLONG_MIN) {printf("Underflow occurred\n");}} else if (endptr == str) {printf("No digits were found\n");} else if (*endptr != '\0') {printf("Further characters after number: %s\n", endptr);} else {printf("The number is: %lld\n", number);}return 0;
}

解释

  1. #include <stdlib.h>: 包含 strtoll 函数的头文件。
  2. #include <errno.h> 和 #include <limits.h>: 包含错误处理和限制常量的头文件。
  3. const char *str = “7FFFFFFFFFFFFFFF”;: 定义一个十六进制字符串表示的数字。
  4. char *endptr;: 指向第一个非数字字符的指针。
  5. errno = 0;: 重置全局错误码。
  6. long long number = strtoll(str, &endptr, 16);: 将十六进制字符串转换为 long long 类型。16 表示十六进制。
  7. 错误检查:
  • if (errno == ERANGE): 检查是否发生了范围错误(溢出或下溢)。
    • if (number == LLONG_MAX): 检查是否溢出。
    • if (number == LLONG_MIN): 检查是否下溢。
  • else if (endptr == str): 检查是否没有找到数字。
  • else if (*endptr != ‘\0’): 检查是否在数字后还有其他字符。
  • else: 成功转换,打印结果。

处理十六进制字符串

在将十六进制字符串转换为整数时,strtoll 会自动处理前缀 0x 或 0X,但这些前缀不是必须的。只要指定基数为 16,strtoll 就会正确解析十六进制字符串。

示例输出

假设输入字符串是 “7FFFFFFFFFFFFFFF”(即最大正值的 long long 类型的十六进制表示),输出如下:

The number is: 9223372036854775807

通过这些示例,你可以将十六进制字符串转换为 long long 类型,并进行错误检查。如果你有任何进一步的问题或需要更多的帮助,请随时提问!

这篇关于strtoll 介绍和举例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128704

相关文章

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Python中局部变量和全局变量举例详解

《Python中局部变量和全局变量举例详解》:本文主要介绍如何通过一个简单的Python代码示例来解释命名空间和作用域的概念,它详细说明了内置名称、全局名称、局部名称以及它们之间的查找顺序,文中通... 目录引入例子拆解源码运行结果如下图代码解析 python3命名空间和作用域命名空间命名空间查找顺序命名空

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

java中反射(Reflection)机制举例详解

《java中反射(Reflection)机制举例详解》Java中的反射机制是指Java程序在运行期间可以获取到一个对象的全部信息,:本文主要介绍java中反射(Reflection)机制的相关资料... 目录一、什么是反射?二、反射的用途三、获取Class对象四、Class类型的对象使用场景1五、Class

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语