QByteArray
추가 처리를 위해 UDP를 통해 원격 컴퓨터로 전송되는 특수 형식의 텔레 그램이 포함 된 파일 이 있습니다. 나는 QByteArray::append()
전보를 모으는 데 사용합니다.
텔레 그램의 구성 요소 중 하나는 인덱스입니다 : 1, 2, 3, ..., 999.이 인덱스는 앞에 0으로 채워야합니다 : 001, 002, 003, ..., 999. 처음에는 테스트 목적으로 색인을 하드 코딩했습니다.
...
telegram.append("001");
...
하지만 나중에는 분명히 다음과 같은보다 일반적인 솔루션으로 이동해야했습니다.
...
QString paddedIdx = QString("%1").arg(idx, 2, QChar('0'));
telegram.append(paddedIdx);
...
초기 시도는 문제없이 작동했습니다. 디버깅 된 내용을 살펴보면 telegram
"002"가 바이트 배열에 추가 된 것을 볼 수있었습니다. 그러나 새로운 솔루션을 사용하면 "0 \ 002"가 표시되고 결과적으로 원격 시스템의 텔레 그램 처리가 실패합니다 (파싱에 reg ex를 사용합니다). 내가 착각하지 않으면 \0
종료 문자이지만 바이트 배열에서 볼 것으로 기대하지 않는 것이 분명합니다.
이것을 사용하십시오 : QString paddedIdx = QString ( "% 1"). arg (QString :: number (idx), 3, QChar ( '0'));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다