2016-10-26 5 views
0

std::vector<char>HEADER_LENGTH을 정수로 변환 할 수 있습니까?<char> 첫 번째 N 요소를 정수로 변환

여기에서 은 메시지 크기이고 std::vector<char>은 전체 메시지입니다.

UPDATE :

처음 N의 요소를 결합하고, 명확히하기 위해, 단지 개별적으로 변환하지.

감사합니다.

+0

아이디어를 얻을 수 없습니까? 첫 번째 HEADER_LENGTH 벡터 을 각 십진수 또는 메모리 위치별로 정수에 결합 하시겠습니까? 예를 들어 벡터 a = { '0', '1', '2', '3'}이고 정수로 4 요소를 가져 오려면 결과는 123 (각 문자가 숫자를 나타냄) 또는 858927408 (결합 int로 4 메모리 위치의 값)? –

+0

예. 첫 번째 HEADER_LENGTH 개 요소를 int에 결합하십시오. – Johnnylin

답변

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

단지 for 루프를 사용하여 벡터의 HEADER_LENGTH 문자를 반복하고 변환합니다.

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

char은 배열 요소와 마찬가지로 처리 할 수 ​​있습니다. int에 할당하면 char 유형을 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'; 
} 

작동해야합니다.

+2

명시 적으로 처리하십시오. 48 대신 '0'을 사용하십시오. –

관련 문제