• 全部
  • 问答

如何把长的数字型字符串转化为16进制的字符串?

qfsb_p 2006-06-09 05:27:36
如题:
不管是思路还是源代码都欢迎,当然源代码最好,呵呵
请试这个字符串“410000000000000000188999”
...全文
325 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qfsb_p 2006-06-19
谢谢各位!
结贴
回复
bjzhaoxiao 2006-06-13
学习中。。
回复
du51 2006-06-11
for_each比tansform要快.
回复
逸学堂 2006-06-11
使用%2x,转换为unsign short类型输出
回复
OOPhaisky 2006-06-11
帮楼主顶一下,顺便学习...
回复
TrueZq 2006-06-10
晨星厉害
回复
qfsb_p 2006-06-10
对于“transform(digits.begin(), digits.end(), digits.begin(), binder2nd<minus<int> >(minus<int>(), (int)'0'));”
我不是很明白是什么作用,请晨星解释一下,谢谢。
回复
qfsb_p 2006-06-10
谢谢晨星,果然不错!
下周结贴,让大家都学习学习!
回复
晨星 2006-06-10
vector<int> digits里本来存放的是从字符串里拷贝来的数字字符,既各个数字的ASCII码。
为了方便计算,省得后面不断地转换来转换去,我用这个transform把digits中的每一个值减去了字符'0'的ASCII码,于是把它们转换成了各个字符对应的整数,即字符'0'被转换成了整数0,字符'1'被转换成了整数1,……
回复
lishan2002 2006-06-09
strtoul
回复
jixingzhong 2006-06-09
呵呵
这么大数字,
如果转换成内置数据类型是不行的,会溢出 ....
回复
jixingzhong 2006-06-09
呵呵
这么大数字,
如果转换成内置数据类型是不行的,会溢出 ....
回复
晨星 2006-06-09
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <vector>
using namespace std;

string toHex(const string& dec);

int main() {
string dec("410000000000000000188999");
cout << toHex(dec) << endl;
}

string toHex(const string& dec) {
const char* hexDigits = "0123456789ABCDEF";

vector<int> digits;
copy(dec.begin(), dec.end(), back_inserter(digits));
transform(digits.begin(), digits.end(), digits.begin(), binder2nd<minus<int> >(minus<int>(), (int)'0'));

vector<int>::iterator first = digits.begin();
vector<int>::iterator last = digits.end();
string result;

while(first != last) {
int r = 0;
for(vector<int>::iterator i = first; i != last; i++) {
int tmp = *i + r * 10;
*i = tmp / 16;
r = tmp % 16;
}
result = hexDigits[r] + result;
while(*first == 0 && first != last)
first++;
}
return result;
}
回复
fhb13 2006-06-09
如果要输出而不是进行处理就用cout,具体数值分开来存储,具体划分可以用取模的方法。
回复
zhouhuahai 2006-06-09
没细看,那么长的数啊?不好意思
回复
zhouhuahai 2006-06-09
先atoi, 再以%x方式来sprintf,两行代码搞定!!!
回复
dengjun0256 2006-06-09
你那0x就是字符串中的二个字符,与十六进制有关吗?
回复
qfsb_p 2006-06-09
比如“0x56D225004EE68C42E247”
回复
dengjun0256 2006-06-09
什么叫十六进制的字符串?
回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2006-06-09 05:27
社区公告
暂无公告