8进制字符串转16进制字符串(一)
来源:互联网 发布:王贻芳 杨振宁 知乎 编辑:程序博客网 时间:2024/06/07 04:05
//写一个函数实现8进制字符串到16进制字符串的转换//例如://输入"755"结果是"1ED"//输入"777777777777"结果是"FFFFFFFFF" (注意超过了32位)//答案1//C99的标准支持long long类型,能满足超过32位的数据小于64位的数据#include <iostream.h>#include <string.h>//8进制字符串转16进制字符串//注:要保证pHexStr指向内存空间的长度bool ConvertOctalStrToHexStr(const char* pOctalStr, char* pHexStr){int nNum = 0;int nLength = 0; //保存8进制字符串的长度int nHexCount = -1; //保存16进制数的位数int nRemainder = 0; //保存余数char* pHexNumStr = NULL; long long int64DecNum = 0; //10进制64位数long long int64TmpNum = 0;//检查if (pOctalStr == NULL || pHexStr == NULL){return false;}//获取8进制字符串的长度nLength = strlen(pOctalStr);//8进制数转10进制for (int i = nLength - 1; i >= 0 ; i--){//8进制的数必须在0~7之间if (pOctalStr[i] < '0' || pOctalStr[i] > '7'){return false;}//求8的n次方int64TmpNum = 1;for (int j = 0; j < nLength-i-1; j++){int64TmpNum *= 8;}//字符转数据如,'0'->0nNum = pOctalStr[i] - 48;int64DecNum += nNum*int64TmpNum;}//申请内存空间放16进制数的字符串pHexNumStr = new char[nLength]; if (pHexNumStr == NULL){return false;}//清零memset(pHexNumStr, 0, nLength);//10进制转16进制while (true){nHexCount++;nRemainder = int64DecNum % 16;if (nRemainder >= 0 && nRemainder <= 9){nRemainder += 48;}if (nRemainder >= 10 && nRemainder <= 15){nRemainder += 55;}pHexNumStr[nHexCount] = nRemainder;int64DecNum /= 16;if (int64DecNum == 0){break;}}for (int k = 0; k <= nHexCount; k++){pHexStr[k] = pHexNumStr[nHexCount - k];}//释放内存空间if (pHexNumStr != NULL){delete[] pHexNumStr;pHexNumStr = NULL;}return true;}int main(int argc, char* argv[]){const char* pszOctrl = "755";char szHexBuffer[10] = {0};if (ConvertOctalStrToHexStr(pszOctrl, szHexBuffer) == false){printf("Convert false");}else{printf("%s\r\n", szHexBuffer);}return 0;}
0 0
- 8进制字符串转16进制字符串(一)
- 字符串转16进制字符串,16进制字符串转字符串
- 16进制字符串转为二进制字符串
- 16进制字符串转为 字符串
- 字符串转换成16进制字符串
- 8进制字符串转16进制字符串(二)
- 字符串转16进制和16进制转字符串
- Java 字符串,byte[],16进制的字符串互转
- Java 字符串,byte[],16进制的字符串互转
- Java 字符串,byte[],16进制的字符串互转
- Java 字符串,byte[],16进制的字符串互转
- Java 字符串,byte[],16进制的字符串互转
- 字节流、字符串、16进制字符串转换__Java(转)
- Java字节流、字符串、16进制字符串转换(转)
- 字节流、字符串、16进制字符串转换__Java(转)
- 【ACM-Steps1.2】简单字符串处理、简单数学题、进制转换系列8题(一)
- 字节数组转16进制字符串,16进制字符串转字节数组,10进制字符串转16进制字符串,16进制字符串转10进制字符串
- 字符串16进制转换
- ubuntu下使用svn
- Linux 下修改日期和时间
- VMware中CentOS设置固定IP
- Matlab和Arduino通信
- Wooden Sticks(杭电1051)
- 8进制字符串转16进制字符串(一)
- locale的设定及其LANG、LC_ALL、LANGUAGE环境变量的区别
- CentOS 6.3挂载读写NTFS分区(ntfs-3g) [亲测成功]
- HDU 1051 Wooden Sticks【贪心+排序】
- eclipse中怎样查看类之间的引用关系
- Zend Framework(一) windows8.1下配置zend framework1.12
- 关于 adapter notifyDataSetInvalidated();不刷新的问题
- 用户备份的恢复
- 8进制字符串转16进制字符串(二)