我必须向收单方服务器发送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?
答案 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