繁体   English   中英

转换向量 <char> 前N个元素为整数

[英]convert vector<char> first N elements to an integer

如何将std::vector<char>第一个HEADER_LENGTH转换为整数?

HEADER_LENGTH是消息的大小, std::vector<char>是整个消息。

更新

为了明确起见,它正在组合前N个元素,而不仅仅是将它们分别转换。

谢谢。

我不知道您的确切想法,所以我都做我的猜测。

#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;
}

只需使用一个for循环对向量的HEADER_LENGTH个字符进行迭代,然后对其进行转换。

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

您可以像处理数组元素一样处理每个char 您可以将char类型转换为int只需将其分配给int 一个char只是一个1字节的整数。 在ASCII码中,数字从48开始。

vector <char> arr;

for(int i = 0; i < HEADER_LENGTH; i++) {
    int x = arr[i] - 48; 

    //or 

    int x = arr[i] - '0';
}

应该管用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM