У меня есть шестнадцатеричное значение отл.0300E0678C, я конвертирую его в long long int 12899608460, но на этом этапе я должен вывести только 7 последних чисел из long long int - 9608460, поэтому я пытаюсь выполнить sprintf с% lld, но он ничего не возвращает.Есть идеи как это сделать?
#include <SoftwareSerial.h>
#include <ID20Reader.h>
#include <PriUint64.h>
int rx_pin = 3;
int tx_pin = 2;
char output[16];
long long int numer;
char buf[50];
ID20Reader rfid(rx_pin, tx_pin);
void setup() {
Serial.begin(9600);
tone(4, 3400, 1000);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
rfid.read();
if(rfid.available())
{
digitalWrite(LED_BUILTIN, HIGH);
String code = rfid.get();
Serial.println(code);
tone(4, 4000, 500);
char bufor[12];
code.toCharArray(bufor,12);
Serial.println(bufor);
numer = hexToDec(bufor);
Serial.println(PriUint64<DEC>(numer));
delay(500);
digitalWrite(LED_BUILTIN, LOW);
}
}
long long hexToDec(String hexString) {
long long decValue = 0;
int nextInt;
for (int i = 0; i < hexString.length(); i++) {
nextInt = int(hexString.charAt(i));
if (nextInt >= 48 && nextInt <= 57) nextInt = map(nextInt, 48, 57, 0, 9);
if (nextInt >= 65 && nextInt <= 70) nextInt = map(nextInt, 65, 70, 10, 15);
if (nextInt >= 97 && nextInt <= 102) nextInt = map(nextInt, 97, 102, 10, 15);
nextInt = constrain(nextInt, 0, 15);
decValue = (decValue * 16) + nextInt;
}
return decValue;
}