1 条题解
-
0
#include <iostream> #include <string> #include <vector> #include <sstream> #include <map> using namespace std; map<int ,pair<int,int>> readTLV(string input,vector<int>tags) { int flag = 0; map<int,pair<int, int>> result; while (flag<input.length()-4) { //tag就是前两个字符,length是第3、4个字符 string tag=input.substr(flag,2); string length=input.substr(flag+2,2); //十六进制转十进制 int tagNum, lengthNum; stringstream ss1; ss1 << hex << tag; ss1 >> tagNum; stringstream ss2; ss2 << hex << length; ss2 >> lengthNum; int valueOffset = (flag + 4) / 2; flag += 4 + lengthNum * 2; result[tagNum] = pair<int, int>(lengthNum, valueOffset); } return result; } int main(int argc, char *argv[]) { string input; cin >> input; int tagAmount; cin >> tagAmount; vector<int> tags; for (int i = 0; i < tagAmount; i++) { int tag; cin >> tag; tags.push_back(tag); } map<int,pair<int, int>> results = readTLV(input,tags); for (int tag:tags) { //没找到就输出0 0 if (results.find(tag) != results.end()) cout << results[tag].first << " " << results[tag].second << endl; else cout << "0 0"; } }
- 1
信息
- ID
- 109
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 101
- 已通过
- 40
- 上传者