编辑:我不确定这段代码是否符合我的想法。有人可以告诉我如何测试它吗?即我的主函数中的缓冲区应该是什么样的?我假设缓冲区具有以下顺序类型(16 位)、长度(32 位)的两个字段的数据。我假设缓冲区是从文件中读取的,并且每个字段都用空格分隔。这些字段以网络字节顺序存储,当我阅读它们时,我必须将它们转换回主机字节顺序。
我期望代码将从文件中读取内容(应该按网络字节顺序)并按主机字节顺序显示内容。我对类型转换以及文件中的网络字节顺序有点困惑,所以我不知道要使用什么值来测试它。另外,我不确定我的代码是否正确编写,做这种事情或对这种转换有更多了解的人可以告诉我我的代码是否正确吗?
这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printRecords(char *buffer)
{
unsigned int recordType;
unsigned long recordLength;
char *data;
char *index;
if (!buffer)
printf("Empty buffer\n");
while(*buffer)
{
memcpy(&recordType,(const void *) buffer,2);
buffer += 3;
recordType = ntohs(recordType);
printf("Record type normal: %u\n",recordType);
memcpy(&recordLength,(const void *) buffer,4);
buffer += 5;
recordLength = ntohl(recordLength);
printf("Record Length normal: %l\n",recordLength);
break;
}
}
void main()
{
char * buffer = "0000000000000001 00000000000000000000000000000001";
printRecords(buffer);
}