请教高手,格式化字符串问题
我手头有下列字符串:“06 0a 2b 34 01 01 01 01 01 01 01 20 13 00 00 00 da f3 78 13 08 20 a1 42 8e d6 a6 31 39 71 42 4f”。
我想取出后16字节,也就是“da f3 78 13 08 20 a1 42 8e d6 a6 31 39 71 42 4f”,并把它格式化成“daf37813-0820-a142-8ed6-a6313971424f”,该怎么做啊?请高手指点,谢谢!
[解决办法]
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
string convert(const string& src);
int main()
{
string src = "06 0a 2b 34 01 01 01 01 01 01 01 20 13 00 00 00 da f3 78 13 08 20 a1 42 8e d6 a6 31 39 71 42 4f ";
cout < < convert(src) < < endl;
return 0;
}
string convert(const string& src) {
const int byte_num = 16;
const int part_num = 5;
const int part_len[part_num] = {4, 2, 2, 2, 6};
const int dest_len = byte_num * 2 + part_num - 1;
const int use_src_len = byte_num * 3 - 1;
string use_part = src.substr(src.size() - use_src_len);
istringstream iss(use_part);
string result;
result.reserve(dest_len + 1);
string tmp;
for(int i = 0; i < part_num; ++i) {
for(int j = 0; j < part_len[i]; ++j) {
iss > > tmp;
result.append(tmp);
}
result.append( "- ");
}
return result.substr(0, result.size() - 1);
}
[解决办法]
1 从原始的 string中, 使用 substr 方法截取出需要的后16字节内容;
2 截取得到的字符串, 使用 replace (或者其他方法)去除 空格,
得到的就是 “daf378130820a1428ed6a6313971424f”
3 然后在该string 索引 8、13、17、21 四个位置 insert方法插入 '- '字符,
得到“daf37813-0820-a142-8ed6-a6313971424f”
此为最终结果 ~
[解决办法]
瞌睡虫的方法,如果是我的话我就用这个,顺序读过去就可以
[解决办法]
晨星和虫子的做法好像基本上是一样的哦,只不过晨星是源码,而虫子是伪码^_^