首页 > 解决方案 > 在C中将休闲字符串转换为int

问题描述

作为标题,我需要将一个随意的字符串(如“elephant”)转换为 int 类型。我已经知道stdlib.h库的atoistrtol函数。但是,这不适用于休闲字符串(返回值始终为 0)。这样的功能还存在吗?

标签: cstringint

解决方案


什么atoi是将“整数字符串”转换为整数值。这与itoa.

该字符串"elephant"没有数字含义。如果你想把它编码成一个int你需要一个 8 字节的整数和一个字节序的约定。任何更长的字符串都需要拆分为多个整数值。

显然,它的实用性相当可疑,因为它比字节数组有什么优势?

所以简短的回答是没有函数,因为没有将任意字符串编码为整数。请记住,在大多数平台上只有 2 32或 2 64 个可能的整数值,但在典型的现代计算机上可能有2 2 36 个字符串值。

您不能将 2 68719476736 个可能的字符串值(例如 8GB)映射为 2 64整数。

如果您确实想将任意单词映射到数字,则需要一个查找表,例如字典,为每个可能的输入单词分配一个预定义的整数值。由于不存在这样的单词列表,详尽的列表太大了,并且没有关于大象有多少数字的标准,尽管表情符号,这是你必须自己制作的东西。


推荐阅读