1

元のバイナリ イメージ ファイルの例:

ÿÃÿà^@^PJFIF^@^A^A^@^@^A^@^A^@^@ÿÃ^@<84>^@

ノート :

^@ = null

結果のバイナリ イメージ ファイル:

ÿÃÿà ^PJFIF^A^A^A^AÿÃ<84>

^@ 行方不明

サンプルコード:

char sendBuffer[17500];
char buffer[16000];
char sendBuffer2[17500];
char temp[10];

inputFile = fopen("image.jpg", "rb");
fseek(inputFile , 0, SEEK_SET);
fread(buffer, fileSize, 1, inputFile );

for (j = 0; j < fileSize; ++j)
{
    sprintf(sendBuffer, "%c", ((char *)buffer)[j]);

    if (((char *)buffer)[j] == '\x00')
    {
        sprintf(temp, "%c", buffer[j]);
        strcat(sendBuffer2, temp);
    }
    else
    {
        strcat(sendBuffer2, sendBuffer);
    }

バイナリの null 値を char に格納できますか?
上記のコードで既に試しましたが、バイナリ null がなくなりました。バイナリ null を char に保存する方法は? またはそれを保存する他のタイプのデータはありますか?udpソケットでjpgなどのバイナリファイルを送信したい。

4

2 に答える 2

2

C の string は慣習であり、ゼロで終了します。したがって、必要なのは、固定/既知の長さのバイナリ文字列です。また、長さを考慮した strlen と sprintf 以外の関数を使用する必要があります。

于 2013-09-18T11:08:18.963 に答える