我在 c 中決議了來自 websocket 的以下資料包有效負載。
81 82 ce 5d 4d ac bf 57
我收到了一個像這樣的無符號字符陣列。
unsigned char array[256];
recv(new_socket, array, sizeof(array),0);
但是當我迭代它以檢查它時,它變得很時髦......
while(i != 256){
printf("%x\n", array[i]);
i ;
}
#output:
81
82
ce
5d
4d
ac
bf
57
40
0
0
0
0
0
0
0
40
... more zeros and bad hexes
看起來前幾個很好,但后來開始向我的 buf 添加空值和隨機奇怪的十六進制。這對我來說似乎很簡單,但我是新手。你們能幫我修一下嗎?
uj5u.com熱心網友回復:
假設您使用的是Linux 中的標準 recv 函式,該函式回傳一個型別的值,該值ssize_t指定它接收到的位元組數。您應該查看回傳值并只列印那么多位元組。如果您列印的位元組數比這多,那么您只是從陣列中列印未初始化的位元組,所以它們可以是任何東西。
您可以通過在定義陣列時用零初始化陣列來使輸出更清晰并幫助避免未定義的行為:
unsigned char array[256] = {};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/461072.html
上一篇:生成一個包含0和1的陣列
下一篇:字符陣列的奇怪行為
