/******************************************************************** created: 2016-5-25 desc: 10进制与x进制的相互转换 author: 陈刚 purpose: 如有问题与我联系 QQ: 17448470 *********************************************************************/ #pragma once #include "stdafx.h" #include "string_util.h" //10进制和x进制的换算 class CBaseDigitalConv { public: CBaseDigitalConv(){} virtual ~CBaseDigitalConv(){} public: //10进制转化成的x进制长度,不足nMinLen长度的话高位补0,否则不改变什么 string to_x(const string& src10, int nMinLen) { string dst; uint64_t src = stringToint64(src10); while(src != 0){ int nMod = src % m_nDigital; char szTmp[2]; szTmp[0] = m_charSet[nMod]; szTmp[1] = 0; dst.append(szTmp); src = src / m_nDigital; } reverse(dst.begin(), dst.end()); string str = convMinLen(dst, nMinLen); return str; } //x进制转为10进制 string to_10(const string& srcx, int nMinLen) { uint64_t dst = 0L; for(int i=0; i?"); } virtual ~CDigitalConv90(){} }; /* 测试例子: //0120160524121052485 --》 00008sKrPTsBmv CDigitalConv62 d62; string str10 = d62.to_10("00008sKrPTsBmv", 0); str10 = d62.to_10("00008sKrPTsBmv", 19); string str62 = d62.to_x("0120160524121052485", 0); str62 = d62.to_x("0120160524121052485", 14); //0120160524121052485 --》 R;NKOY[U. CDigitalConv90 d90; str10 = d90.to_10("R;NKOY[U.", 0); string str90 = d90.to_x("0120160524121052485", 0); */