2017-04-19 2 views
0

그래서이 데이터 패킷을 TCP/IP 프로토콜을 사용하여 장치로 보내려고합니다. 내 배열 :C++에서 16 진수 문자 배열을 문자열로 변환하는 방법?

unsigned char array1[] = {'0x00', '0x84', '0x00', '0x00', '0x00', '0x06', '0x54', '0x01', '0x00', '0x01', '0x00', '0x03'}; 

문자열로 변환하고 싶습니다. 어떻게해야합니까?

는 지금 난 그냥 수동으로 진수 상응하는 아래로 쓰고 :

unsigned char array1[] = {0,132,0,0,0,6,84,5,0,2,255,0}; 

를 문자열로 변환 : 그러나

std::string data (array1, array1 + sizeof array1/sizeof array1[0]); 

, 난 그냥 문자열처럼 내 육각 패킷을 사용할 수 있을까 직접?

string x= "00 84 00 00 00 06 54 05 00 02 FF 00"; 

변경 사항이없는 첫 번째 7 바이트 메시지 헤더를 디자인 할 수있는 방법이 있습니까? 나머지 부분은 어떤 변화가 있습니까?

+1

"0x00"은 실제로 "문자"하나가 아니라 멀티 바이트 문자 리터럴입니다. 아마도 예를 들어 'unsigned char array1 [] = {0x00, 0x84, ...};'? * 따옴표가 없으면? –

+0

따옴표가 없으면 서명되지 않은 유형에 대해 경고가 발생합니다. –

+0

왜 정확히'std :: string'으로 원합니까? 나는 이것이 "정확한"데이터 타입이라는 것을 확신하지 못한다 ... –

답변

1

다음 코드는 필요한 것을 처리해야합니다.

std::string s { "\x00\x01\x02\x03\x04", 5 }; 

길이가 일명 바이트 인 std :: string 생성자를 사용하십시오.

+1

@VTT - 질문이 내 대답 뒤에 편집되었습니다. –

관련 문제