如何在C语言中将长度添加到char数组缓冲区的末尾

时间:2017-06-26 10:45:22

标签: c iso8583

我必须向收单方服务器发送ISO8583消息,并且交换机要我在整条消息之前发送带有APDU长度的消息,但我不知道如何发送。长度为4个字节。

示例:我想发送消息(PAN-Expiry Date)4427680000628820 1014

部首:30353530 消息:44276800006288201014

我想通过套接字发送:30353530(00000014 =十进制20)4427680000628820(PAN)1014(Exp)

哪位应该给我:303535300000001444276800006288201014

其实我喜欢这个

buf[0]=0x30
buf[1]=0x35
buf[2]=0x35
buf[3]=0x30

如何在buf [3]之后添加长度00000014?

2 个答案:

答案 0 :(得分:0)

您可以像前4个字节一样继续操作:假设您的总消息长度(在您的示例中为0x00000014)存储在32位变量" len"中,请添加长度标头

buf[4] = (uint8_t)((len >> 24ul) & 0xFF);
buf[5] = (uint8_t)((len >> 16ul) & 0xFF);
buf[6] = (uint8_t)((len >> 8ul) & 0xFF);
buf[7] = (uint8_t)(len & 0xFF);

答案 1 :(得分:-1)

你不能增加长度"到C中的char数组。无论是静态还是动态分配,大小都是固定的 - 没有办法简单地将它变大。你必须创建一个新的更大的数组并复制旧的字节。

char oldarray[4];
// fill it with stuff

// oops, too small
char newarray[8];
memcpy(newarray, oldarray, 4);

// move on with things