Строка в ASCII Hex расщепление в C - PullRequest
0 голосов
/ 27 февраля 2020

Я использую C в лаборатории windows CVI 8.5.

Я конвертирую число с плавающей точкой в ​​ASCII Hex (эта часть уже выполнена):

#include <stdio.h>
#include <string.h>

    int main () {
    char K_char[20], K_ASCII[20];
    int a = 30;   //30 degree Celsius
    int i, len ; 
    float k =  a + 273.15;   //Temperature Celsius to Kelvin

    sprintf(K_char, "%.2f", k); //Temperature K convert to char array

    len = strlen(K_char);
    for(i = 0; i<len; i++){
        sprintf(K_ASCII+i*2, "%02X", K_char[i]); //char array convert to ASCII Hex
    } 
    printf("%s\n", K_ASCII);
    return(0);
    }

Результат от код выше 3330332E3135.

Теперь я хочу извлечь каждый байт из приведенной выше строки следующим образом:

a[0] = 0x33
a[1] = 0x30
a[2] = 0x33
a[3] = 0x2E
a[4] = 0x33
a[5] = 0x35

Может кто-нибудь дать мне какой-нибудь совет? Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2020

Кажется, ты слишком усложнил это. У вас уже есть эти значения в K_char. Как

K_char[0] = 0x33                                                                                                                                     
K_char[1] = 0x30                                                                                                                                     
K_char[2] = 0x33                                                                                                                                     
K_char[3] = 0x2E                                                                                                                                     
K_char[4] = 0x31                                                                                                                                     
K_char[5] = 0x35
1 голос
/ 27 февраля 2020
  • Напишите функцию, которая преобразует отдельный символ ASCII '0' в '9' или 'A' в 'F' в числовой эквивалент c.
  • Тогда l oop по вашему массиву формата ASCII, например:

    size_t length = strlen(K_ASCII);
    uint8_t hex [length/2+1];
    
    for(size_t i=0; i<length/2; i++)
    {
      hex[i] = to_hex(K_ASCII[2*i]);
      hex[i] <<= 4;
      hex[i] += to_hex(K_ASCII[2*i+1]);
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...