#include <stdio.h> #include <stdint.h> #include <string.h> #pragma pack(1) typedef struct packet { uint8_t start; uint8_t cmd; uint16_t value; uint8_t status; uint32_t checksum; uint8_t end; } packet_t; #pragma pack() void build_packet(uint8_t command, uint16_t value, uint8_t status, uint32_t checksum) { uint8_t buffer[10]; packet_t pkt; pkt.start = 0xA5; pkt.cmd = command; pkt.value = value; pkt.status = status; pkt.checksum = checksum; pkt.end = 0x5A; memcpy(buffer, &pkt, sizeof(packet_t)); for (size_t i = 0; i < sizeof(packet_t); i++) { printf("%u ", buffer[i]); } } int main() { uint8_t cmd, status; uint16_t val; uint32_t crc; scanf("%hhu %hu %hhu %u", &cmd, &val, &status, &crc); build_packet(cmd, val, status, crc); return 0; }
Test Cases
Test Results
Input
1 4660 1 2864434397
Expected Output
165 1 52 18 1 221 204 187 170 90