把由十六进制数字组成的字符串(包含可选的前缀0X和0x),转化为与之等价的整数值,字符串中包含的字符可以是0-9,A-F,a-f

news2025/1/22 14:49:07

方法一:

1-十六进制是一种基数为16的计数系统,是一种逢16进1的进位制。例如十六进制0x57,写成十进制是  5*16^1+7*16^0=87。第一位乘16的0次方,第二位乘16的1一次方。

2-如果0x57按顺序来转化,不太好转,因为不知道有几位。所以先写一个倒置的函数,改写成75x0。先定义一个int i = 0; 7*16^0;i++;7*16^1;  这样就方便乘的i次方。

代码如下:

#include <stdio.h>
#include<math.h>
//字符串倒置
char* inversion(char* s,int i)
{
	
	char str[] = "0000000000xxxxxx";
	int j = 0;
	str[i] = '\0';
	while (*s)
	{
		str[i - 1] = *s;
		i--;
		s++;
	}
	return str;
}
// 把由十六进制数字组成的字符串(包含可选的前缀0X和0x),转化为与之等价的整数值,字符串中包含的字符可以是0-9,A-F,a-f
int htoi(char* s,int len) 
{	
	char *t = inversion(s,len);//倒置
	int num = 0;
	int i = 0;
	while (*t)
	{
		if ((*(t) == 'x' || *(t) == 'X') && *(t + 1)=='0')
		{
			t = t+2;
		}
		if (*t >= '0' && *t <= '9')
		{
			num += (*t - '0')*pow(16,i);
			t++;
			i++;
		}
		if (*t >= 'a' && *t <= 'f')
		{
			num += (*t - 87) * pow(16, i);
			t++;
			i++;
		}
		if (*t >= 'A' && *t <= 'F')
		{
			num += (*t - 55) * pow(16, i);
			t++;
			i++;
		}
	}
	return num;
}

int main()
{
	char s[] = "0x16aC7";
	int len = sizeof(s) - 1;
	int ret = htoi(s,len);
	printf("%d", ret);
}

方法二:

#include <stdio.h>
#define YES 1
#define NO 0
int htoi(char s[])
{		//0x3ABC
	int hexdigit, i, inhex, n;
	//判断前面是否有0x
	i = 0;
	if (s[i] == '0')
	{
		i++;
		if (s[i] == 'x' || s[i] == 'X')
			i++;
	}
	
	//转成十进制
	inhex = YES;
	n = 0;
	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;
		}
		if (inhex == YES)
		{
			n = 16 * n + hexdigit;
		}

	}
	return n;

}
int main()
{
	char s[] = "0x16aC7";
	int ret = htoi(s);
	printf("%d", ret);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP xdebug

使用场景 一台MAC上安装了phpstorm&#xff0c;虚拟机安装了对应的web程序&#xff0c;需要调试。 坑点&#xff0c;网上教程太多&#xff0c;不如看官网&#xff0c;需要按照xdebug版本来配置php.ini https://www.jetbrains.com/help/phpstorm/2023.3/configuring-xdebug.htm…

如何系统地有效学习Power Query?

系统地有效学习Power Query&#xff0c;可以遵循以下步骤&#xff1a; 首先&#xff0c;了解Power Query在数据处理和分析中的作用&#xff0c;它如何帮助你简化数据整理工作&#xff0c;将重复数据操作自动化&#xff0c;并与Excel、Power BI等工具有非常高的集成。 1. 官方…

JavaScript对象设计哲学:八种模式塑造高效代码

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言 &#x1f680;二、Object 构造函数 &#x1f9f1;&#x1f4cc; 基本用法&#x1f4cc; 重要性&#x1f4cc; 实际应用案例 三、对象字面量 &#x1f4d8;&#x1f4cc; 定义属性&#x1f4cc; 定义方法&#x1f4…

基于Spring封装一个websocket工具类使用事件发布进行解耦和管理

最近工作中&#xff0c;需要将原先的Http请求换成WebSocket&#xff0c;故此需要使用到WebSocket与前端交互。故此这边需要研究一下WebSocket到底有何优点和不可替代性&#xff1a; WebSocket优点&#xff1a; WebSocket 协议提供了一种在客户端和服务器之间进行全双工通信的…

制氧机负离子的作用与好处深度解析

随着现代生活节奏的加快&#xff0c;空气质量逐渐下降&#xff0c;人们对健康生活的追求也日益增强。在这样的背景下&#xff0c;制氧机负离子功能因其多重健康效益而备受关注。本文将深入探讨制氧机负离子的作用与功效&#xff0c;帮助大家更好地了解并应用这一健康科技。 我们…

Win11环境下,AirSim和UE4安装

这里主要描述一下我前段时间成功安装AirSim和UE4的流程&#xff0c;中间也遇到过一些问题&#xff0c;刚开始我安装的是最新的UE5&#xff0c;但是不知道什么情况运行AirSim中的blocks模块始终没有成功&#xff0c;VisualStudio中提示Unable to find plugin PhysXVehicles &…

回收站删除的文件怎么恢复?6个恢复技巧记得收藏!

“回收站删除的文件还有机会恢复吗&#xff1f;应该怎么操作才能恢复回收站里删除的文件呀&#xff1f;本人纯小白&#xff0c;希望大家推荐几个简单易懂的恢复方法。” 在使用电脑的过程中&#xff0c;我们时常会不小心将重要文件误删到回收站&#xff0c;甚至直接从回收站中彻…

AI预测体彩排3采取878定位大底=23策略+杀断组+杀组选+杀和尾+杀和值012缩水测试5月16日预测第2弹

昨天的87823大底测试第一次测试&#xff0c;已经成功命中! 今天继续测试&#xff0c;仍旧目标为&#xff1a;10期中至少5中期。好了&#xff0c;废话不多说了&#xff0c;直接上结果吧~ 首先&#xff0c;878定位如下&#xff1a; 百位&#xff1a;4,5,6,3,8,1,9,0…

控制台的高度可调有哪些重要意义解析

在现代办公环境中&#xff0c;控制台的高度可调性越来越受到重视。它不仅为员工提供了更加舒适的工作环境&#xff0c;还提高了工作效率和生产力。本文将详细探讨控制台高度可调的重要性&#xff0c;并解析其在实际应用中的优势。 个性化适应需求 对于长时间在控制台前工作的用…

Kubernetes入门:应用部署方式的演变

Kubernetes&#xff1a;管理云平台中 多主机的 容器化应用的平台。 应用部署方式的演变 传统部署 互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;无法为物理服务器中的应用程序定义资源边…

用AI帮你写简历,入职啦简历编辑器

简历的重要性 在当前就业形势严峻、竞争加剧的背景下&#xff0c;获取理想工作的难度与日俱增。此时&#xff0c;一份精心准备、亮点突出的简历&#xff0c;成为了您脱颖而出、成功获得面试机会乃至工作offer的关键。面对HR有限的审阅时间和众多应聘者的激烈角逐&#xff0c;如…

Flink LookupJoin攒批查询

Flink LookupJoin攒批查询 需求背景 使用Lookup Join进行维表关联时&#xff0c;流表数据需要实时与维表数据进行关联。使用Cache会导致数据关联不准确&#xff0c;不使用Cache会造成数据库服务压力。攒批查询是指攒够一定批数量的数据&#xff0c;相同的查询Key只查询一次&a…

苹果永久版安装PD虚拟机:Parallels Desktop 19 一键激活版

Parallels Desktop 19是一款功能强大的虚拟机软件&#xff0c;专为Mac用户设计&#xff0c;允许用户在同一台Mac电脑上同时运行Windows、Linux等多个操作系统&#xff0c;而无需额外的硬件设备。 下载地址&#xff1a;https://www.macz.com/mac/9581.html?idOTI2NjQ5Jl8mMjcuM…

力扣HOT100 - 32. 最长有效括号

解题思路&#xff1a; 栈 class Solution {public int longestValidParentheses(String s) {int max 0;// 也可以使用 Stack<Integer> stacknew Stack<>();但Stack是遗留类&#xff0c;不推荐Deque<Integer> stack new LinkedList<>();stack.push(…

Nginx HTTPS配置:一篇文章解决所有痛点

你好呀&#xff0c;我是赵兴晨&#xff0c;文科程序员。 今天&#xff0c;我将与大家分享一些关于Nginx的实用知识。这次的主题是&#xff1a;如何为Nginx配置HTTPS。我将从HTTP与HTTPS的区别讲起&#xff0c;然后逐步介绍Nginx的安装与HTTPS配置的详细步骤。 HTTP与HTTPS的区…

Github项目部署到自己的域名

天坑&#xff0c;买的是华为的域名&#xff0c;不过新用户才一块&#xff0c;就忍了 要买个域名&#xff0c;我买的是华为的&#xff08;此处是购买地址&#xff09; 购买后去控制台&#xff0c;点击“总览”进入域名页面 点击想要修改的域名后的“管理解析” 点击快速解析&…

vant添加列表, 日期选择总是填充到最后一个组内原因

添加多个行程, 无论在哪个行程上修改时间, 时间总是只显示在最后一个行程里 错误代码: <div class"journey"><divv-for"(item, index) in ruleform.hrms_business_item":key"index"><div class"journey-title">&l…

人工智能创新领衔,Android系统如虎添翼:2024 Google I/O 大会深度解析

人工智能创新领衔&#xff0c;Android系统如虎添翼&#xff1a;2024 Google I/O 大会深度解析 2024年5月14日举行的Google I/O大会&#xff0c;犹如一场精彩的科技盛宴&#xff0c;吸引了全球的目光。大会上&#xff0c;谷歌发布了一系列重磅产品和技术更新&#xff0c;展现了…

TMC4671超越传感器和摄像头之外——将物联网从云端转移到现实世界[应用案例]

在早期&#xff0c;物联网 (IoT) 在很大程度上充当了云端服务的“眼睛和耳朵”&#xff0c;收集传感器、摄像头和其他物理世界输入设备的数据&#xff0c;而不太注重操纵或控制它所监视的事物。支持物联网的自动化和机器人应用已经开始合并&#xff0c;但是一般而言&#xff0c…

SIP-7041 20W SIP广播网络有源音箱 校园广播20W木质SIP音箱

SIP-7041 20W SIP广播网络有源音箱 校园广播20W木质SIP音箱 一、描述 SIP-7041 20W SIP广播网络有源音箱 支持标准SIP协议 SIP-7041是我司的一款壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到…