Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

Как работать с форматом hex

hex to int

Ответить
Аватара пользователя
dizzyy
Капитан
Сообщения: 722
Зарегистрирован: 24.11.2017{, 16:25}
Репутация: 33
Откуда: Червоноград
Имя: Марьян

Как работать с форматом hex

#1

Сообщение dizzyy » 28.07.2020{, 21:57}

пробую разобраться с rfid.
нему догнать вот что
я читаю блок , завожу его масив ..в масиве число кодируется допустим 4 битами ..число 1000 записывается A0 86 01 00
читаю числа 00 01 86 А0 , но не пойму как правильно записать это число в интеджер,
Безымянный.jpg

Аватара пользователя
Sancho
Полковник
Сообщения: 3461
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 448
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Как работать с форматом hex

#2

Сообщение Sancho » 29.07.2020{, 08:49}

dizzyy писал(а):
28.07.2020{, 21:57}
в масиве число кодируется допустим 4 битами ..число 1000 записывается A0 86 01 00
читаю числа 00 01 86 А0 , но не пойму как правильно записать это число в интеджер
Интежер - два байта. Пользуйте long
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
dizzyy
Капитан
Сообщения: 722
Зарегистрирован: 24.11.2017{, 16:25}
Репутация: 33
Откуда: Червоноград
Имя: Марьян

Как работать с форматом hex

#3

Сообщение dizzyy » 29.07.2020{, 17:58}

Вчера ночью нашел библиотеку конвертации будет время проверю..
Я уже и блок делал что стринг разбивает на чар, сравнивает и умножает и все равно какое то зло получается..
У меня раз получилось что было минусовое число, вот как раз из-за интеджера..
Спасибо, буду трезвым проверю

Аватара пользователя
dizzyy
Капитан
Сообщения: 722
Зарегистрирован: 24.11.2017{, 16:25}
Репутация: 33
Откуда: Червоноград
Имя: Марьян

Как работать с форматом hex

#4

Сообщение dizzyy » 30.07.2020{, 14:36}

Sancho, зачем велосипед мне думать, действитель взял штатний байт то Doubleword и все сработало

ecoins
Лейтенант
Сообщения: 617
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 90
Откуда: Шатура
Имя: Энвер

Как работать с форматом hex

#5

Сообщение ecoins » 30.07.2020{, 22:01}

dizzyy писал(а):
29.07.2020{, 17:58}
Вчера ночью нашел библиотеку конвертации будет время проверю..
Может будет полезен функция из разработанной нами библиотеки для 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;};

Аватара пользователя
dizzyy
Капитан
Сообщения: 722
Зарегистрирован: 24.11.2017{, 16:25}
Репутация: 33
Откуда: Червоноград
Имя: Марьян

Как работать с форматом hex

#6

Сообщение dizzyy » 31.07.2020{, 18:03}

я смотрел в сторону вот этой библиотеки

Код: Выделить всё

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() {}

Ответить

Вернуться в «Помогите, а то я "нимагу"»