当前位置: 首页 > news >正文

接上一主题,实现QtByteArray任意进制字符串转为十进制数

函数:

	/// <summary>/// n进制字符串转为十进制数,snDefine的长度最小为二进制数。/// 例子:/// 	_pn(_Math::strNToInt(_t("1010"), _t("01")));///		_pn(_Math::strNToInt(_t("-1010"), _t("0123456789")));///		_pn(_Math::strNToInt(_t("天空海阔"), _t("海阔天空")));  //4进制定义为 "海阔天空" /// 输出:///		10///		-1010///		177/// </summary>/// <param name="sNumberr"></param>/// <param name="snDefine"></param>/// <returns></returns>/// 创建时间: 2025-01-12      最后一次修改时间:2025-01-12       static __int64 strNToInt(const _char* sNumber, const _char* snDefine);

实现:


__int64 _Math::strNToInt(const _char* sNumber, const _char* snDefine)
{__int64 iResult = 0;size_t nLen = _Math::strLen_t<_char>(sNumber);size_t nBaseLen = _Math::strLen_t<_char>(snDefine);lassert(nLen > 0);lassert(nBaseLen >= 2);  //最小2进制for (int i = nLen - 1; i >= 0; --i) {_char ch = sNumber[i];//n为进制定义中的序号值,例: 定义:0123456789 中的 0 的值就是 0//                          定义:abc        中的 a 的值也是 0int n = _Math::strChr_t<_char>(snDefine, ch);  if (n != -1) {iResult += n * _Math::pow_uint(nBaseLen, nLen - i - 1);}else {break;}}if (sNumber[0] == '-')return -iResult;elsereturn iResult;
}

strNToInt例子:


int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);_pn(_Math::strNToInt(_t("1010"), _t("01")));_pn(_Math::strNToInt(_t("-1010"), _t("0123456789")));_pn(_Math::strNToInt(_t("天空海阔"), _t("海阔天空")));  //4进制定义为 "海阔天空" _pn(_Math::strNToInt(_t("1F"), _t("0123456789ABCDEF")));return a.exec();
}

输出结果:

海阔天空定义为进制是不是很有意思:

海   0

阔   1

天    2

空    3

 

http://www.lryc.cn/news/520220.html

相关文章:

  • CNN-GRU-MATT加入贝叶斯超参数优化,多输入单输出回归模型
  • Java 如何传参xml调用接口获取数据
  • uniapp 之 uni-forms校验提示【提交的字段[‘xxx‘]在数据库中并不存在】解决方案
  • excel VBA 基础教程
  • 基于异步IO的io_uring
  • 【江协STM32】10-2/3 MPU6050简介、软件I2C读写MPU6050
  • 仓颉笔记——写一个简易的web服务并用浏览器打开
  • DolphinScheduler自身容错导致的服务器持续崩溃重大问题的排查与解决
  • ecmascript 标准+ 严格模式与常规模式 + flat-flatMap 应用
  • 基于ILI9341液晶屏+STM32U5单片的显示试验
  • 最短路径算法
  • 如何用 ESP32-CAM 做一个实时视频流服务器
  • Centos7 解决Maven scope=system依赖jar包没有打包到启动jar包中的问题(OpenCV-4.10)
  • iOS实际开发中使用Alamofire实现多文件上传(以个人相册为例)
  • 如何将分割的mask转为为分割标签
  • 【动手学电机驱动】STM32-MBD(5)Simulink 模型开发之 PWM 输出
  • MySQL进阶突击系列(05)突击MVCC核心原理 | 左右护法ReadView视图和undoLog版本链强强联合
  • vue2日历组件
  • 【PyQt】多行纯文本框
  • workerman5.0篇〡异步非阻塞协程HTTP客户端
  • JavaScript 延迟加载的方法( 7种 )
  • python+pymysql
  • 基于 Selenium 实现上海大学校园网自动登录
  • 啥!GitHub Copilot也免费使用了
  • Spring配置文件中:密码明文改为密文处理方式(通用方法)
  • Linux下ext2文件系统
  • BUUCTF:web刷题记录(1)
  • 【微服务】面试题 6、分布式事务
  • 【2024年华为OD机试】(C卷,100分)- 分割均衡字符串 (Java JS PythonC/C++)
  • Spring Data Elasticsearch简介