2013-07-13 2 views
1

с реальной проблемой с этой простой проблемой. У меня есть строка, как это:преобразование строки в массив байтов (без знака) cpp

std::string msg = "00 00 00 00 00 06 01 05 00 FF 00 00"; 

, который я хотел бы:

unsigned char bbuffer[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x05, 0x00, 0xFF, 0x00, 0x00 }; 

, что это способ сделать это?

ответ

7

Если возможно, я бы рекомендовал использовать std::vector<unsigned char> вместо фактического массива.

Используя это, я предполагаю, что я хотел бы сделать что-то вроде этого:

std::istringstream buffer(msg); 

std::vector<unsigned char> bbuffer; 

unsigned int ch; 
while (buffer >> std::hex >> ch) 
    bbuffer.push_back(ch); 

Если вы действительно настаивают на массив, вы могли бы сделать что-то вроде:

std::istringstream buffer(msg); 

char bbuffer[12]; 

unsigned int ch; 
for (int i=0; buffer >> std::hex >> ch; i++) 
    bbuffer[i] = ch & 0xff; 

Но вектор, как правило, предпочтительнее.

+2

Я был так близок! Я получу тебя в следующий раз;) – Borgleader

+0

ха-ха, висящие фрукты. +1 :) – 0decimal0

+0

great.thnx. я все равно использовал вектор внутри –

Смежные вопросы