Что ж, лучший способ получить доступ к серийному номеру - это, вероятно, скопировать его в отдельный буфер, используя strncpy .
#include <string.h>
...
char family;
char serial[7]; // Extra byte for null terminator
char checksum;
...
family = ROM_CODE[0];
strncpy(serial, &ROM_CODE[1], 6);
serial[6] = '\0';
checksum = ROM_CODE[7];
...
&ROM_CODE[1]
предназначен для получения адреса 2-го элемента в ROM_CODE
. ROM_CODE+1
тоже может сработать, но мой C - ржавый налет.
Нуль ('\ 0') добавляется в конце, поскольку C использует строки с нулевым символом в конце . Это обеспечит совместимость с подпрограммами библиотеки C и обычно используемыми идиомами языка Си.
Вы также можете получить к нему доступ непосредственно из массива. Но с этим будет сложнее работать, и вряд ли оно того будет стоить, если вам действительно не понадобятся эти 6 байтов памяти.
В зависимости от того, насколько сложным является ваше приложение, вы можете захотеть обернуть это в классе. Передайте 8-символьный буфер в конструктор и затем используйте методы, такие как getFamily()
/ getSerial()
, чтобы получить необходимую информацию.
Тем не менее, для очень простого приложения достаточно много дополнительного кода, чтобы упростить то, что уже очень легко управляемо.