将vector <char>前N个元素转换为整数

时间:2016-10-26 04:14:49

标签: c++

如何将HEADER_LENGTH的{​​{1}}转换为整数?

此处std::vector<char>是邮件大小,HEADER_LENGTH是整个邮件。

更新

澄清一下,它正在组合前N个元素,而不仅仅是单独转换它们。

感谢。

3 个答案:

答案 0 :(得分:1)

我无法得到你的想法所以我做了两个猜测。

#include <iostream>
#include <cstring>
#include <vector>
using namespace std;

int main() {
    vector<char> a = {'0','1','2','3','4'};

//My sample is for HEADER_LENGTH of 4

    // by memory content
    int x;
    memcpy(&x, a.data(), 4);
    cout << x << endl; //858927408

    // by digit
    x = 0;
    for (auto it = 0; it < 4; it++) {
        x = x * 10 + (a[it] - '0');
    }
    cout << x << endl; //123
    return 0;
}

答案 1 :(得分:0)

只需使用for循环迭代向量的HEADER_LENGTH个字符,然后转换它们。

for(int i = 0; i < HEADER_LENGTH; i++)
{
    vector[i]; // convert char to int here
}

答案 2 :(得分:0)

您可以像处理数组元素一样处理每个char。您只需将char类型转换为int,即可将int类型转换为charvector <char> arr; for(int i = 0; i < HEADER_LENGTH; i++) { int x = arr[i] - 48; //or int x = arr[i] - '0'; } 只是一个1字节的整数。在ASCII码中,数字从48开始。所以;

dependencies {
  compile group: 'com.android.support', name : 'multidex', version: '1.0.1'
}

应该工作。