2012-06-11 45 views
1

在C中可以通過UDP使用g_socket_send通過GSocket發送十六進制值嗎?我不一定需要以某種方式進行任何轉換,但即使手動輸入十六進制字符串作爲g_socket_send中的gchar緩衝區,它也會以ASCII字符串形式發送。在C中使用g_socket_send發送十六進制值

預先感謝您!

+0

你能說清楚「hex string」是什麼意思嗎? –

+0

我正在發送命令給一個可以通過串口或UDP接受十六進制命令的電子設備。我相信,舉個例子,我們試圖發送的'play'命令是「0xFF 0x05 0x01 0xFE」。當我通過串行發送(使用其他設備)時,它可以正常工作,但不能在通過g_socket_send發送時使用。當我通過g_socket_send發送上述字符串並監聽端口嗅探器發出的程序時,它看起來是發送與我的字符串相當的ASCII等價物而不是十六進制值。 – DrRocket

回答

2

您正在發送字節。你需要弄清楚另一端的期望,並據此建立這些字節。比方說,如果你的接收器想要二進制數據,那麼可能是這樣的:

char buffer[4] = { 0xFF, 0x05, 0x01, 0xFE }; 
/* ... */ 
if (g_socket_send(socket, buffer, 4, ...) < 0) { 
    /* handle error */ 
} 
+0

嗯...我會試試這個。謝謝! – DrRocket

+0

這樣做。謝謝! – DrRocket