c中包含字节的操作

时间:2015-03-19 12:26:57

标签: c sockets byte

我目前正在处理涉及C语言套接字的事情,这是一个非常奇怪的任务。 我发送和接收消息[包含有效负载和长度的消息结构],我需要对有效负载进行字节更正。

我用于发送和接收消息的结构是:

 typedef struct {
   int len;
   char payload[MSGSIZE];
 } msg;

例如,我需要检查字符串的第一个字节,因为它是奇偶校验字节[1]。 我很难弄清楚如何做到这一点如何检索第一个字节以及我需要用什么类型来声明它

[1](http://en.wikipedia.org/wiki/Parity_bit

1 个答案:

答案 0 :(得分:1)

这是一个示例代码,可以执行我认为您想要的操作。这里的关键是myMessage.payload + n,是一个char *,从paload开头的n个字节开始。您可以作为有效负载[offset]访问的奇偶校验字节。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


#define MSGSIZE (100)

typedef struct {
    int len;
    char payload[MSGSIZE];
} msg;



int main(){

    msg myMessage;
    // put some stuff in message for a testing
    myMessage.len = 10;
    myMessage.payload[0] = (char)17;  // parity byte just may up its value
    strcpy(myMessage.payload + 1, "1234567890"); // copy a string of ten bytes to payload after the parity byte.

    // read the message
    printf("Message has len %d\n", myMessage.len);
    printf("Message parity byte is %d\n", (int)myMessage.payload[0]);
    printf("Message is %s\n", myMessage.payload + 1);

    return 0;
}

样本输出

消息有len 10

消息奇偶校验字节为17

消息是1234567890