簡體   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