#define LEN_SERIAL_NUMBER (12)
void C_CosemObjMeterInfo::SetSerialNum(U08 u08MeterId, U64 u64SerialNum)
{
U08 u08tmp[LEN_SERIAL_NUMBER+2] = {0};
memset(u08tmp, 0xFF, sizeof(u08tmp)); // 将缓存置为0xFF
sprintf((char *)u08tmp, "%012lld", u64SerialNum); // 打印12位数据至缓存
memcpy(m_stMeterInfoTbl[u08MeterId].serialNum, u08tmp, LEN_SERIAL_NUMBER);
printf("\r\nUpdate Meter%d's serial num to %012s\r\n", u08MeterId, u08tmp);
for (U08 j = 0; j < sizeof(u08tmp); j++)
{
printf("0x%02x ", u08tmp[j]);
}
}
打印输出结果如下:
Update Meter0's serial num to 098020000703
0x30 0x39 0x38 0x30 0x32 0x30 0x30 0x30 0x30 0x37 0x30 0x33 0x00 0xff
由输出结果可以清楚地看出,在12位数据之后,自动追加了0x00,即’\0’。