En este artículo, vamos a aprender cómo copiar un valor entero de memoria intermedia de caracteres y la memoria intermedia de caracteres a la variable de número entero uso de punteros en C Lenguaje de Programación?
While trabajando en la programación embebida, si es necesario asignar un valor número entero a la memoria intermedia de caracteres y búfer de caracteres (que contienen valor entero en formato hexadecimal) al valor entero, puede hacer posible mediante el uso de los punteros .
1) Copiar de entero a carácter tampón
memcpy(buffer, (char*)&ival,sizeof(unsigned int));
Aquí,
- tampón es una matriz de caracteres
- IVAL es una variable unsigned número entero, de tipo fundido a puntero de caracteres ( char * ) se aplica aquí para copiarlo en caracteres amortiguar
- sizeof (unsigned int) es el número de bytes que se copiará
2) carácter copia de búfer a número entero
ival = *(unsigned int*)(buffer);
aquí , tampón está copiando a IVAL mediante el uso de asignación ( = ) typing operador y fundido a ( unsigned int * ) – leerá 4 bytes (tamaño de unsigned int) de tampón índice de base y operador de asignación asignará en ival .
Ejemplo para copiar número entero valor a búfer de caracteres y viceversa en C
#include <stdio.h>
#include <string.h>
int main(void)
{
unsigned int ival = 12345;
char buffer[4];
int i;
//converting integer value to character buffer
memcpy(buffer, (char*)&ival,sizeof(unsigned int));
//value will be in the hexadecimal format
// so need to print it in hexadecimal format
//integer value will be copied in the form of bytes
printf("Character buffer: ");
for(i=0; i<sizeof(unsigned int); i++)
printf("%02X ", buffer[i]);
//converting string formatted value to unsigned int
ival =0;
ival = *(unsigned int*)(buffer);
printf("nival = %dn",ival);
return 0;
}
salida
Character buffer: 39 30 00 00
ival = 12345
Explicación:
Tenga en cuenta que, el valor Hexadecimal de 12345 es 00003039 en 4 bytes formato: {0x00, 0x00, 0x30, 0x39} , después de copiar a búfer todos los bytes se copiarán en el amortiguar . Por lo tanto, el valor de tampón es “39 30 30 30” .
Y, después de copiarlo a la variable entera el valor de ival es de nuevo 12345 .