пробую разобраться с rfid.
нему догнать вот что
я читаю блок , завожу его масив ..в масиве число кодируется допустим 4 битами ..число 1000 записывается A0 86 01 00
читаю числа 00 01 86 А0 , но не пойму как правильно записать это число в интеджер,
Как работать с форматом hex
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как работать с форматом hex
Интежер - два байта. Пользуйте longdizzyy писал(а): 28 июл 2020, 21:57 в масиве число кодируется допустим 4 битами ..число 1000 записывается A0 86 01 00
читаю числа 00 01 86 А0 , но не пойму как правильно записать это число в интеджер
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Как работать с форматом hex
Вчера ночью нашел библиотеку конвертации будет время проверю..
Я уже и блок делал что стринг разбивает на чар, сравнивает и умножает и все равно какое то зло получается..
У меня раз получилось что было минусовое число, вот как раз из-за интеджера..
Спасибо, буду трезвым проверю
Я уже и блок делал что стринг разбивает на чар, сравнивает и умножает и все равно какое то зло получается..
У меня раз получилось что было минусовое число, вот как раз из-за интеджера..
Спасибо, буду трезвым проверю
Как работать с форматом hex
[ref=#ff8000]Sancho[/ref], зачем велосипед мне думать, действитель взял штатний байт то Doubleword и все сработало
-
- Полковник
- Сообщения: 4020
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 167 раз
Как работать с форматом hex
Может будет полезен функция из разработанной нами библиотеки для lcd и консоли - возвращает цифру в форматах
'B' - 8-разрядное двоичное число b00000000;
'b' - 4-разрядное двоичное число b0000;
'H' - 4-разрядное HEX число 0xFFFF;
'h' - 2-разрядное HEX число 0xFF;
'D' - целое число uin32_t;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// var_ID: Возвращает цифру в символьной форме из выводимой переменной начиная со старшей позиции
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
char getCharVal(uint32_t val, uint8_t upper, char mode, uint8_t len, uint8_t n){uint32_t buff32=0;
if((n>len) || (n>10)) n=0;
if((mode=='B') || (mode=='b')) {buff32=(val>>(len-n))&1;}
if((mode=='H') || (mode=='h')) {buff32=(val>>(len-n)*4)&0xf;}
if((mode=='D') || (mode=='0') ||(mode=='1') ||(mode=='2') || (mode=='3') || (mode=='T')) {n=len-n+1; while(n!=0) {buff32=val; val/=10; buff32=buff32-(val*10); n--;};}
if(buff32<=9) {buff32=buff32 +'0';} else {buff32=buff32-10+(upper ? 'A' : 'a') ;}
return (uint8_t)buff32;};
Как работать с форматом hex
я смотрел в сторону вот этой библиотеки
Код: Выделить всё
https://github.com/yoursunny/PriUint64
#include <PriUint64.h>
void setup()
{
Serial.begin(9600);
Serial.println();
uint64_t x = 0x7E007A88D2;
Serial.println(PriUint64<HEX>(x));
Serial.println(PriUint64<DEC>(x));
Serial.println(PriUint64<OCT>(x));
Serial.println(PriUint64<BIN>(x));
Serial.println();
uint64_t y = 541173909714;
Serial.println(PriUint64<HEX>(y));
Serial.println(PriUint64<DEC>(y));
Serial.println(PriUint64<OCT>(y));
Serial.println(PriUint64<BIN>(y));
}
void loop() {}
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя