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

qfsb_p 2006-06-09 05:27:36
如题:
不管是思路还是源代码都欢迎,当然源代码最好,呵呵
请试这个字符串“410000000000000000188999”
...全文
424 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
什么叫十六进制的字符串?

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧