어떻게 검색하려고했으나 가장 좋은 방법은 찾지 못했습니다. Cubeia Firebase 서버를 사용하는 게임에서 소켓을 사용하여 연결하고 있습니다. 다음은 서버로부터받은 패킷입니다.벡터 unsigned char을 문자열/int로 변환
--TableSnapshotPacket
|--int32_t tableid;
|--std::string address;
|--std::string name;
|--int16_t capacity;
|--int16_t seated;
|--std::vector<Param> params;
|--std::string key;
|--int8_t type;
|--vector<uint8_t> value;
내 문제는 string과 int에 대한 Param의 파서 키 값입니다. 나는 vector<uint8_8> value
포함, http://i.stack.imgur.com/Kjynp.png
당신이 볼 수 있듯이 INT 에 대한 문자열 http://i.stack.imgur.com/xlv9y.png
및 key == 'M'
에 대한 key == 'N'
읽고 싶은 '\ 0'처음에, 그래서 난 파서 이것에 문제가있어. 아래는 내 방식이며, 문자열로 변환 할 수는 있지만 기분이 좋지 않고 int로 변환 할 수 없습니다.
for (int i = 0; i < ip->value.size(); i++)
{
if (i < 2)
value.push_back(' ');
else
value.push_back(ip->value[i]);
printf("%d", ip->value[i]);
}
누구나 가장 이상적입니까? 여기 자바 코드이다 http://i.stack.imgur.com/hDn9b.png
감사합니다. NetVipeC. Int와 시도했지만 성공하지 못했습니다. 여기서 M은 10, 100, 2000, 10000, 50000 또는 200000 일 수 있으며 그 값을 가져올 필요가 있습니다. – vxhonghui
특정 케이스를 게시 하시겠습니까? 이미지의 경우 연속 된 메모리 위치 [0], [1], [2], [3]입니다. 0x0,0x0,0x0,0xd, 샘플 코드 첫 번째 버전의 read int : int32_t int_value = * static_cast (& (ip-> value [0])); 0x0000000d (빅 엔디안)를 읽을 필요가있을 경우를 대비하여 (little endian으로) 0x0d000000을 읽습니다. , 캐스트와 함께 두 번째 코드가 필요합니다. –
NetVipeC