首页 / 知识
关于性能:在C中将十六进制字符串有效转换为整数?
2023-04-12 03:58:00
Convert a hexadecimal string to an integer efficiently in C?
在C语言中,将十六进制数字字符串转换为二进制
例如,如果我有
您需要 编辑:现在与MSVC,C ++和非GNU编译器兼容(请参阅结尾)。 问题是"最有效的方法"。 OP没有指定平台,他可能正在为基于RISC的ATMEL芯片进行编译,该芯片带有256字节的闪存用于代码。 为了记录,以及对于那些像我这样的人,他们欣赏"最简单的方式"与"最有效的方式"之间的区别,并且喜欢学习...
它不需要外部库,并且速度应该非常快。它处理大写,小写,无效字符,奇数大小的十六进制输入(例如:0xfff),并且最大大小仅受编译器限制。 对于非GCC或C ++编译器或将不接受花式十六进制声明的编译器。 用以下版本(更长,但更合规)替换第一条语句:
试试这个:
如果没有stdlib,则必须手动进行操作。
注意:此代码假定大写A-F。如果len超出最长的32位或64位整数,则此方法不起作用,并且对于非法的十六进制字符也没有错误捕获。 对于AVR微控制器,我编写了以下功能,包括相关注释以使其易于理解:
例:
将输出: 就像经常发生的那样,您的问题遇到了严重的术语错误/歧义。通常来说,这并不重要,但是在这个特定问题的背景下,这一点至关重要。
您会发现,没有"十六进制值"和"十进制值"(或"十六进制数"和"十进制数")之类的东西。"十六进制"和"十进制"是值表示的属性。同时,值(或数字)本身没有表示形式,因此它们不能为"十六进制"或"十进制"。例如,C语法中的
我想您的问题就这么说了,这表明您需要将值(即字符串)的ASCII十六进制表示形式转换为值(另一个字符串)的ASCII十进制表示形式。一种方法是使用整数表示形式作为中间表示形式:首先,将ASCII十六进制表示形式转换为足够大小的整数(使用 如果这不是您需要做的,那么您必须澄清您的问题,因为不可能从提出问题的方式中弄清楚。 十六进制到十进制。不要在在线编译器上运行它,因为它不起作用。
对于较大的十六进制字符串(如示例中所示),我需要使用strtoul。 埃里克
我真的不认为您的解决方案应该被否决,但是我对它为什么会发生的猜测是因为它不太实用。投票的想法是,"最佳"答案会浮到顶部,尽管您的答案可能对幕后发生的事情(或可能的发生方式)更具指导意义,但绝对不是解析十六进制数字的最佳方法在生产系统中。 再次,从教育的角度来看,我认为您的答案没有任何问题,我当然不会(也不会)将其否决。不要因为有些人不喜欢您的答案之一而灰心丧志,停止发布。它发生了。 我怀疑我的回答会使您对自己的被否决感到更好,但是当您问为什么某件事被否决而没有人回答时,我知道这尤其不好玩。 尝试将此从十进制转换为十六进制
如前所述,效率基本上取决于要优化的内容。 当优化代码行时,或者仅在没有完整功能的标准库的环境中工作时,一种快速而肮脏的选择可能是:
...更多类似话题在这里:https://stackoverflow.com/a/58253380/5951263
也许是因为它既丑陋又没有教育意义,而且行不通。另外,我怀疑像我一样,大多数人目前没有编辑的能力(并且根据需要的等级来判断-永远不会)。
数组的使用可以提高效率,但是此代码中未提及。 埃里克
好吧,我不是C专家,但这是我想出的:
我本来会进行更多的位屏蔽而不是进行比较,但是我严重怀疑位屏蔽比在现代硬件上进行比较要快得多。 在C语言中,您可以通过多种方式将十六进制数转换为十进制数。一种方法是将十六进制数转换为整数。我个人发现这很简单而且很小。 这是在强制转换的帮助下将十六进制数转换为十进制数的示例代码。
目前这仅适用于小写字母,但超级容易使两者同时使用。
|
最新内容
相关内容
python支持r语言吗?
python支持r语言吗?,代码,名称,培训,官网,第一,语言,对象,字符串,方法,后缀,python中可以支持r语言。python提供了一个模块rpy2,可以较好地完python如何检测字符串是不是全为字
python如何检测字符串是不是全为字母?,检测,培训,字符串,字母,方法,字符,示例,语法,以上,更多,python中可以使用isalpha()方法检测字符串是不Python文件如何转换为字符串
Python文件如何转换为字符串,数据,主体,名字,培训,文件,字符串,末尾,方法,对象,语句,python文件如何转换为字符串的方法:一、最方便的方法是一Python中区分字符与字符串吗?
Python中区分字符与字符串吗?,数据,培训,数字,字符串,数据类型,字符,类型,语言,有所不同,布尔,python中不区分字符与字符串,与C语言相比,PythonPython语言中mod表示什么意思
Python语言中mod表示什么意思,环境,培训,表示,语言,结果,负数,语法,符号,两者,规律,python语言中mod表示取模运算符。语法MOD(a,b)通常情况下python到底是什么样的语言
python到底是什么样的语言,教育,软件,人工智能,培训,代码,简介,语言,类型,程序,动态,python是一种面向对象、解释型、动态类型计算机程序设计python中字符串怎么转换成int
python中字符串怎么转换成int,情况,培训,字符串,浮点,错误,类型,不是,臣妾,字面,函数,将字符串转换成,整型,从字面理解很容易让人误会。比如,要python语言受欢迎吗
python语言受欢迎吗,代码,工作,业务,活跃,设计,发展,人工智能,培训,数据,语言,python因其简单易用的语法而获得了很多赞誉。该语言强调代码的python怎样计算输入的字符串的长度
python怎样计算输入的字符串的长度,培训,字符串,长度,字典,函数,列表,空格,语法,字符,实例,python中的字符串。可以使用len()函数来计算长度,python怎么获得字符串长度
python怎么获得字符串长度,培训,字符串,长度,字典,函数,列表,空格,语法,字符,实例,python中的字符串。可以使用len()函数来计算长度,值得注意python如何截断字符串
python如何截断字符串,培训,位置,字符,字符串,索引,倒数,依此类推,方括号,后面,表示,字符串本质上就是由多个字符组成的,Python允许通过索引来python字符串怎么替换
python字符串怎么替换,培训,字符串,参数,函数,方法,使用方法,语法,实例,以上,以下,python中的字符串替换,主要是使用replace()函数。replace()