#!/usr/bin/env nickle int checksum(int[] msg) { int sum = 0; for (int i = 0; i < dim(msg); i++) { sum ^= msg[i]; sum &= 0xff; } return sum; } void main() { string[...] input; int[...] msg; setdim(input, 0); while (!File::end(stdin)) { input[dim(input)] = gets(); } setdim(msg, 0); for (int i = 0; i < dim(input); i++) { string[*] words = String::wordsplit(input[i], " ,\t"); for (int j = 0; j < dim(words); j++) { if (words[j] == "/" + "*") break; if (String::length(words[j]) > 0 && Ctype::isdigit(words[j][0])) { msg[dim(msg)] = string_to_integer(words[j]); } } } printf("\t0xa0, 0xa1, 0x%02x, 0x%02x,\t\t/* length: %d bytes */\n", dim(msg) >> 8, dim(msg) & 0xff, dim(msg)); for (int i = 0; i < dim(input); i++) printf("%s\n", input[i]); int csum = checksum(msg); printf ("\t0x%02x, 0x0d, 0x0a,\n", csum); } main();