检查某个二进制字符串是否等于十六进程表示的字符串
来源:互联网 发布:bzero windows 编辑:程序博客网 时间:2024/06/03 11:43
可以将两个字符串序列转换为10进制进行比较。
一共实现三个函数
1. 判断是否相等
2. 将2或16进制转为1进制
3. 将一个字符c转为数字
参考代码:
#include <iostream>#include <string>#include <cmath>using namespace std;// 比较bool CompareBin_Hex(const string& binary, string& hex);// 将字符转为数字static int CharToDigit(char c);// 将二进制或十六进制转为十进制static int ConvertToBase(const string& str, int base);// 比较bool CompareBin_Hex(const string& binary, string& hex){if (binary.empty() || hex.empty())return false;int n1 = ConvertToBase(binary, 2);int n2 = ConvertToBase(hex, 16);if (n1 < 0 || n2 < 0)return false;if (n1 == n2)return true;return false;}// 将二进制或十六进制转为十进制static int ConvertToBase(const string& str, int base){// 从最后一位开始算起int end = str.size() - 1;int value = 0;for (int index = end; index >= 0; index--){int num = CharToDigit(str[index]);if (num < 0 || num >= base) // num>=base 超出该进制的范围return -1;// 指数最后一位从0开始int exp = end - index;value += num * pow(base, exp);}return value;}// 将字符转为数字static int CharToDigit(char c){if (isdigit(c))return c - '0';else if (c <= 'F' && c >= 'A')return c - 'A' + 10;else if (c <= 'f' && c >= 'a')return c - 'a' + 10;return -1;}void TestComBinHex(){string bin1 = "1111";string hex1 = "F";cout << boolalpha << CompareBin_Hex(bin1, hex1) << endl; // truestring bin2 = "10101011";string hex2 = "AB";string hex3 = "QQ";cout << boolalpha << CompareBin_Hex(bin1, hex1) << endl; // truecout << boolalpha << CompareBin_Hex(bin2, hex2) << endl; // truecout << boolalpha << CompareBin_Hex(bin2, hex3) << endl; // false}int mian(){TestComBinHex();return 0;}
阅读全文
0 0
- 检查某个二进制字符串是否等于十六进程表示的字符串
- 获得表示某个正数的二进制补码的字符串
- linux shell 脚本判断某个文件是否有某个字符串以及统计含有某个字符串的个数然后做if else大于小于等于逻辑判断
- 十进制转二进制的字符串表示
- 两个字符串表示的二进制数求和
- 字符串是否表示数值
- 面试题:检查一个数组里是否存在m个数的和等于某个值
- 检查字符串是否可运算的数字
- 检查字符串里是否包含* 的js
- 检查字符串是否为电话号码的方法
- 判断Map中字符串key的值是否等于0
- 检查一个字符串是否以指定的字符串结尾
- 检查一个字符串是否以指定的字符串结尾
- 字符串--字符串的表示
- jquery判断字符串中是否存在某个的字符串
- jquery判断字符串中是否存在某个的字符串
- 判断字符串是否包含某个子字符串的方法
- 输出内存数据的二进制和十六进制的字符串表示
- jisuanke复赛A
- 【建模必备】遗传算法应用举例(多元单峰值函数的优化实例)
- 关于HTTPS通信和证书验证的流程
- Unity学习笔记 一些小疑问解答记录
- 设计模式(Design Pattern)
- 检查某个二进制字符串是否等于十六进程表示的字符串
- 算法 tricks
- Netty用户指南为4. x
- 欢迎使用CSDN-markdown编辑器
- angular拖动插件——ng-drag、ng-drop
- jstl标签库-core库
- JS的Object.defineProperty
- Swift中的closure类型与func的关系
- 自定义Flume拦截器,并将收集的日志存储到Kafka中(案例)