• Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, 36.... ничего себе) Интересная информация спасибо! Буду пользоваться и знать)
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, реально? ..... ХАХАХАХАх, зато теперь буду знать

    Спасибо ещё раз, тяжелый сегодня денёк)
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, На счёт print-а да, тоже так и думал, но когда сегодня узнал про snprintf - обомлел... Спасибо за информацию
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    result += atoi(asciiHex);@res2001, с делал вот так

    и я получил не 25 а 19... урааа. Всем спасибо
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, окладчик накрылся медным тазом , либо я чего-то не понимаю 6628f07734654300542725.png

    Сейчас решил переписать этот момент с нуля (преобразование)

    а можно как-нибудь по-другому это сделать? не переводить из HEX ASCII в DEC, а потом обратно, а сразу на его уровне прибавить и отправить в массив, а то я туда, сюда гоняю массивы, использую функцию, вроде бы понял как работает, а вот ничего не понятно, то пишет такое то такое. А ещё один момент, когда я вывожу на экран в формате допусти "%X" он же не меняет сам себя, а только нам отображать да? или он сразу его конвертирует?
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, в Serial2.available() я проверяю всё что мне приходит, тут всё в порядке, я чтобы не писать много кода где принимает опустил, и показал только где использую те переменные которые объявил глобально.

    Там дальше в запрос я соединяю с суммой которую я отправлю, то есть int 65478= 675 рублей 45 копеек , я там конвертирую это так

    int mon = 65478;
    int count = snprintf(NULL, 0, "%i", mon); // Определяем количество символов
    char hexAsciimon[count];
           for (int i=0;i<sizeof(hexAsciimon);i++){
            hexAsciimon[i]=0x00;
          }
    sprintf(hexAsciimon, "%i", mon);

    И число 65478 разбилось как 36 35 34 37 38 и каждая упала в ячейку массива и всё красиво, но вот с числом из HEX ASCII в DEC, где я потом тот же 19 (DEC по идеи) должен +1 и уже 20 ( 32 30 ) залить в массив и всё. Всё перепробовал, вчера работала ,сегодня нет, чёт другое лезет .....

    Ваш код пробую пишет 2А в первую ячейку, голова кругом
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, Смотрите, получается у меня есть запрос IDL, с Vendoteka , от туда я получаю длину Оператора номера и соответственно сам оператор номер, у них он идёт в HEX ASCII от 30 до 39 (0 -9) и чтобы мне дальше работать я их конвертирую в DEC чтобы в VRP отравить на +1 больше чем есть (нужно по протоколу)
    поэтому я сделал массивы так, чтобы они были под размер номер оператора, если пришло 2 байта , то я 2 выделил и тд ( проблема только будет если число будет 9 99 и 999 где нужно +1 размер, но думаю решить можно) и получается так, что я по байту забираю с Serial2 зная что тут 2 или 3 байта длина.

    Buffer[iBuf] = Serial2.read();
    byte buffff[Buffer[11]];// знаю что в 11 находиться всегда длина 
    
    if (Buffer[11]==1){
            
             buffff[0]=Buffer[12];
             razmer=1;
    
              for(int i = 0;i<razmer;i++){
                kolchislo[i]=buffff[i];
              }
    
    
            
          }else if(Buffer[11]==2){
             razmer=2;
              buffff[0]=Buffer[12];
              buffff[1]=Buffer[13];
              for(int i = 0;i<razmer;i++){
                kolchislo[i]=buffff[i];
              }
    
             
          }


    когда я забрал уже номер оператора это допустим 39 35 ( то есть 95 в DEC номер) я делаю преобразования

    char asciiHex[sizeof(kolchislo) + 1];
    for(int i = 0;i<razmer;i++){
                asciiHex[i]=kolchislo[i];
              }
    asciiHex[razmer] = 0;
    int decValue = strtol(asciiHex, NULL, 16);
    decValue++;
    Serial.printf("%X\n", decValue);


    Но ничего не получается, а в моём коде получалось число не в DEC (19) а она в HEX (19), а в вашем коде (он выше) получалось 2А вообще

    Попытался более подробно объяснить, просто мне потом полученную 19 надо превратить в 31 39 и обратно так же в по байту в массив засунуть... Кто придумал такой формат или может я не правильно делаю....
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, Спасибо за код, попробовал, но мне выдало 2A в нулевую ячейку массива, при значениях 32 39, что может быть такое?
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, Да, как я понял он 31 39 = 19 HEX и 25 в DEC попробовал с 32 39 это 29 HEX и 41 DEC

    Как сделать так, чтобы он не 25, а сразу 19 писал?
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    У меня есть данный код, kolchislo= 0x31, 0x39 (так же могут и просто 30 или 3 символа, то есть 31 33 37 )

    byte kolchislo[]={0x00,0x00,0x00,0x00,0x00};
    razmer=1;// может и 2 и 3 быть, от этого завесить дальнейший размер
    char asciiHex[razmer+1];
    for(int i = 0;i<razmer;i++){
                asciiHex[i]=kolchislo[i];
              }
     asciiHex[razmer+1]='\0';
    int decValue = strtol(asciiHex, NULL, 16);
    decValue++;
    char hexAscii[]={0x00,0x00,0x00,0x00};
    sprintf(hexAscii, "%02X", decValue);
    for (int i=0;i<sizeof(hexAscii);i++){
              Serial.printf("%X\n", hexAscii[i]);
            }


    Не могу никак понять почему перестала работать, попробовал Ваш пример , но видимо в цикле застрял, хотя ноль есть ( сейчас формулу вернул как была , без вашей функции)
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, Может быть такое, что 25 DEC это он 19 HEX ??? если так, то не понятно почему он DEC 19 не сделал
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, Спасибо за ответ, я поменял как вы говорили :

    31
    39
    0
    0
    0
    это то что в количестве
    и 25 откуда-то, хотя должно по идеи быть 19
    6628d76884e4a727717904.png

    Изменённый код
    char asciiHex[sizeof(kolchislo)+1]; 
    for(int i = 0;i<razmer;i++){
                asciiHex[i]=kolchislo[i];
              }
              asciiHex[sizeof(kolchislo)]='\0';
    for (int i=0;i<sizeof(asciiHex);i++){
              Serial.printf("%X\n", asciiHex[i]); // 30
    
            }
    
    
            int decValue = strtol(asciiHex, NULL, 16);
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    Спасибо за ответ, сейчас попробую
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    Можете пожалуйста пример привести?
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    Danilka2400, только kolchislo = не нулям, а 0x31 и 0x39 например, это я изначально ей даю размер, 5 максимум
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    res2001, Сейчас код выглядит вот так

    byte kolchislo[]={0x00,0x00,0x00,0x00,0x00};
    razmer=1;// может и 2 и 3 быть, от этого завесить дальнейший размер
    char asciiHex[razmer];
    for(int i = 0;i<razmer;i++){
                asciiHex[i]=kolchislo[i];
              }
    int decValue = strtol(asciiHex, NULL, 16);
    decValue++;
    char hexAscii[]={0x00,0x00,0x00,0x00};
    sprintf(hexAscii, "%02X", decValue);
    for (int i=0;i<sizeof(hexAscii);i++){
              Serial.printf("%X\n", hexAscii[i]);
            }
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    Я попробовал поставить числа HEX ASCII 31 39 из буфера, но он их превратил 25 DEC не в 19, почем так?
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    Rsa97, Как можно это тогда реализовать? подскажите пожалуйста
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    Хорошо, спасибо за ответ!
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @Danilka2400 Автор вопроса
    Rsa97, когда буду в следующий раз смотрел, учту. Спасибо за ответ!
    Написано