Copia de valor entero a búfer de caracteres y viceversa en C

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 .


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *