在服務器中,首先獲取圖像數據的長度,然後通過TCP套接字獲取圖像數據。如何將長度(以十六進制)轉換爲十進制,以便我知道應該讀取多少圖像數據? (例如0x00 0x00 0x17 0xF0到6128字節)將十六進制從套接字轉換爲十進制
char len[4];
char buf[1024];
int lengthbytes = 0;
int databytes = 0;
int readbytes = 0;
// receive the length of image data
lengthbytes = recv(clientSocket, len, sizeof(len), 0);
// how to convert binary hex data to length in bytes
// get all image data
while (readbytes < ???) {
databytes = recv(clientSocket, buf, sizeof(buf), 0);
FILE *pFile;
pFile = fopen("image.jpg","wb");
fwrite(buf, 1, sizeof(buf), pFile);
readbytes += databytes;
}
fclose(pFile);
編輯:這是工作的。
typedef unsigned __int32 uint32_t; // Required as I'm using Visual Studio 2005
uint32_t len;
char buf[1024];
int lengthbytes = 0;
int databytes = 0;
int readbytes = 0;
FILE *pFile;
pFile = fopen("new.jpg","wb");
// receive the length of image data
lengthbytes = recv(clientSocket, (char *)&len, sizeof(len), 0);
// using networkd endians to convert hexadecimal data to length in bytes
len = ntohl(len);
// get all image data
while (readbytes < len) {
databytes = recv(clientSocket, buf, sizeof(buf), 0);
fwrite(buf, 1, sizeof(buf), pFile);
readbytes += databytes;
}
fclose(pFile);
「二進制十六進制數據」是什麼意思?它可以是二進制或十六進制。你在尋找類似'ntohl'的東西嗎? **將這4個字節寫入流的代碼在哪裏? – Jon 2013-03-05 11:42:46
@Jon。謝謝! – askingtoomuch 2013-03-05 12:43:37