//十六进制字符串转十进制数字

int ChangeNum(char* str)
{
char revstr[16]={0}; //根据十六进制字符串的长度,这里注意数组不要越界
int num[16]={0};
int count=1;
int result=0;
int length;

length = strlen(str);

memcpy(revstr,"0x",2);
memcpy(revstr + 2,str,length);

length += 2;

for (int i=length-1;i>=0;i--)
{
if ((revstr[i]>=‘0‘) && (revstr[i]<=‘9‘))
num[i]=revstr[i]-48;//字符0的ASCII值为48
else if ((revstr[i]>=‘a‘) && (revstr[i]<=‘f‘))
num[i]=revstr[i]-‘a‘+10;
else if ((revstr[i]>=‘A‘) && (revstr[i]<=‘F‘))
num[i]=revstr[i]-‘A‘+10;
else
num[i]=0;
result=result+num[i]*count;
count=count*16;//十六进制(如果是八进制就在这里乘以8)
}
return result;
}

时间: 2024-09-27 02:21:23

//十六进制字符串转十进制数字的相关文章

VC中,如何将十六进制字符串转换为十进制数?

原文链接:http://blog.csdn.net/bennyfun79/article/details/6934843 在程序中,我们有时需要将一个十六进制字符串转换为十进制数字.比如: 1 char *ptr="0x11"; 2 int n=0; 3 //我们想让n等于0x11,即17 通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法: view plaincopy to clipboardprint? 1 char *ptr="123";

将一个十六进制字符串转换为十进制数值的问题

在程序中,我们有时需要将一个十六进制字符串转换为十进制数字.比如:char *ptr="0x11";int n=0;//我们想让n等于0x11,即17 通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法: char *ptr="123"; int n=0; n=atoi(ptr); printf("%d/n",n); //输出:123 但是atoi库函数只能将十进制字符串转化为int整形,比如下面的例子: #include &l

android byte字节数组转换十六进制字符串(物联网开发总结)

想起前段时间的物联网的外包开发,经常遇到通过wifi接受的数据,要通过转换成十六进制字符串,或者最后又是十进制数据.都是根据双方的协议来开发的.那么我发送过去的数据也需要,经过特殊转换成byte字节发过去,硬件那边收到不至于乱码的数据. 1.硬件调试发给android这边是十六进制数据 原始数据:68 38 38 68 A 72 78 55 34 12 43 23 01 07 Y 00 00 00 0C 13 78 56 34 12 0C 3B 78 34 12 0C 26 78 56 34 1

十六进制字符串转十进制整数

十六进制字符串转十进制整数 编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回. #include <iostream> using namespace std; // 十六进制字符串的最大长度 #define MAX_HEX_STR_LEN 100 bool hexToDec(char shex[], int & idec) { size_t i = 0, len = 0; int mid = 0; l

十六进制字符串转十进制整数,诡异的问题,Linux和Windows结果不同

static int HexAToInt(char *str, int length) { char  revstr[16] = { 0 };  //根据十六进制字符串的长度,这里注意数组不要越界 int   num[16] = { 0 }; int   count = 1; int   result = -1; if (NULL != str) { strncpy(revstr, str, length); for (int i = length - 1; i >= 0; i--) { if

HEX格式数据转换成十六进制字符串

1 /** 2 3 * Hex格式数据转换成十六进制字符串 4 5 * @param src 6 7 */ 8 9 public void bytesToHexString(byte[] by){ 10 StringBuilder stringBuilder = new StringBuilder(""); 11 for (int i = 0; i < by.length; i++) { 12 int in = by[i] & 0xFF; 13 String str= I

十六进制字符串转化成字符串输出

///<summary> /// 从16进制转换成汉字 /// </summary> /// <param name="hex"></param> /// <param name="charset">编码,如"utf-8","gb2312"</param> /// <returns></returns> public string

“System.FormatException”类型的未经处理的异常在 System.IdentityModel.dll 中发生 其他信息: 十六进制字符串格式无效。

如果你的 WebService 客户端证书配置都没问题,唯独调用接口会出现这个错误 "System.FormatException"类型的未经处理的异常在 System.IdentityModel.dll 中发生 其他信息: 十六进制字符串格式无效. 解决办法: 打开你的证书列表,找到证书指纹: 接下来是重点,复制的时候,切记不要用全选,像这样: 要用鼠标仔细的从第一个"可见"字符选起,到"可见"字符结束,像这样: 请仔细对比以上两张图的差别,不

【算法C++】十进制字符串转十六进制字符串

问题描述 将一个十进制字符串转化为十六进制字符串. 问题解决 这个问题如果只是十进制转化为十六进制,其实是比较容易的,只要了解短除法就可以解决了,但题目里数是字符串,这就将题目的难度增高了.因为如果只是int型,那最多也就支持个10位数:但字符串却可以上千位,所以我们使用短除法的时候会比较麻烦. 这里我先将字符串转成了int型,先把简单的10位数的实现出来,来理顺一下思路.下面是10进制数转16进制的代码: int main(){ string s; while (cin >> s){ int