2013-12-10 1 views
0

문서에서 ->https://developer.blackberry.com/native/reference/core/com.qnx.doc.wifi_service.lib_ref/topic/wifi_station_connection_get_bssid.htmlwifi_station_connection_get_bssid() 사용 방법은 무엇입니까?

누구든지이 함수 호출을 사용하는 방법을 알고 있습니까? 이것을 성공하지 않고 시도했지만, 내 변수에 저장된 정수 만 가져 오십시오.

uint8_t *target = new uint8_t[WIFI_BSSID_ADDR_LEN]; 
qDebug() << "Error: " + QString::number(wifi_station_connection_get_bssid(target)); 
qDebug() << *target; 

인쇄물은 오류 코드가 "성공"아직 나는 그것을 밖으로 BSSID를하지 않는

NavigationPane: NavigationPaneOnFwdTransitionDone: emitting push transition ended for page: 12 client top: 12 
"Error: 0" 
32 

입니다.

+0

[return code] (https://developer.blackberry.com/native/reference/core/com.qnx.doc.wifi_service.lib_ref/topic/wifi_result_t.html)를 확인하십시오. 그 결과가 네가 기대하는 바가 아니야. – Praetorian

답변

0

QString을 만들 때 *target을 지정하는 것이 문제입니다. 컴파일러는 "QString을 처음으로 char에서 target"으로 지정합니다. 그것이 바로 그것이하는 일입니다.

이가 NUL 종료 문자열로 BSSID를 반환 가정, 당신은 아마로 변경하려면 :

qDebug << QString(target); 

문서는 정말 말을하지 않지만, 잘 대신 char이의 uint8_t를 사용하여 수를 기반으로 문자열이 아닌 숫자 IP 주소로 BSSID를 전달해야합니다. 그렇다면 주소의 바이트를 단계별로 읽고 표시하기 전에 읽을 수있는 형식으로 변환해야합니다. A (가난한) 예를 들어, 일반적인 순서에 뭔가가 :

char buffer[16]; 
sprintf(buffer, "%x.%x.%x.%x", target[0], target[1], target[2], target[3]); 

지금, 이것이 16 진수, 4 바이트 (IPv4의 잘, IPv6에 대한 부족)을 변환하는 하드 코딩. IPv4 및 v6에 대한 적절한 지원, 국유 디스플레이 등은 좀 더 정교 해지지 만, 적어도 이것이 올바른 방향으로 시작될만큼 충분해야한다고 생각합니다.