-5

以下のコードに関する質問は、sprintf を使用した場所です。書式設定された int を挿入する必要があります。これは、クライアントがデータを取得し、char 配列に従ってデータを引き出すためです。したがって、クライアントは受信したコードから [0] と [1] の遅延を取得します。別の変数は、別のコードから送信された [2] と [3] から取得できます。char []に保存するためにprintfのようにフォーマットする方法は何ですか

int sock = *(int*)data->sock;
int i,startDelay =0; 
char buffer[SEND_MESSAGE_LENGTH];
puts("Run Machine Called");
for(startDelay=11;startDelay>=0;startDelay--)
{
    printf("Start Delay:%i\n",startDelay);
    sprintf(buffer,"%2i",startDelay);
    printf("Send Data - %2i - Start Delay\n",*buffer-'0');
    //write_sock(sock,buffer);
    sleep(1);
}
4

1 に答える 1

0

確かではありませんが、2 バイト (16 ビット) の整数値について話していると思います。もしそうなら、それsprintfは仕事に適したツールではありません. 代わりに、整数とマスクとシフトを使用して 16 ビットを抽出する必要があります。

buffer[0] = startDelay & 0xFF; // low byte
buffer[1] = (startDelay >> 8) & 0xFF; // high byte

もちろん、値が 255 より小さいため、ここの上位バイトは常にゼロになるため、次のように簡略化されます。

buffer[0] = startDelay & 0xFF;
buffer[1] = 0;

バイトオーダーがどうあるべきかはっきりしないので、これらを逆にして、上位バイトをbuffer[0]に、下位バイトを に入れる必要があるかもしれませんbuffer[1]

于 2013-04-28T05:00:24.593 に答える