Me gustaría almacenar 4 caracteres (4 bytes) en un int sin firmar.¿Cómo puedo almacenar 4 caracteres en un int sin firmar usando la operación bit a bit?
Respuesta
Usted necesidad de cambiar los bits de cada chamuscar con, a continuación, o combinarlos en el int:
unsigned int final = 0;
final |= (data[0] << 24);
final |= (data[1] << 16);
final |= (data[2] << 8);
final |= (data[3] );
que utiliza un conjunto de caracteres, pero es el mismo principio, no importa cómo los datos está llegando . (Creo que tengo los desplazamientos a la derecha)
usted puede hacerlo de esta manera (no bit a bit, pero tal vez más fácil):
unsigned int a;
char *c;
c = (char *)&a;
c[0] = 'w';
c[1] = 'o';
c[2] = 'r';
c[3] = 'd';
O si desea bit a bit que puede utilizar:
unsigned int a;
a &= ~(0xff << 24); // blank it
a |= ('w' << 24); // set it
// repeat with 16, 8, 0
Si no lo deja en blanco primero, es posible que obtenga otro resultado.
¿No necesitarías un yeso, debería ser c = (char *) & a? –
Eso sería opcional. Lo agregaré Gracias – Iustin
una forma más de hacer esto:
#include <stdio.h>
union int_chars {
int a;
char b[4];
};
int main (int argc, char const* argv[])
{
union int_chars c;
c.a = 10;
c.b[0] = 1;
c.b[1] = 2;
c.b[2] = 3;
c.b[3] = 4;
return 0;
}
más simple, su mejor:
/*
** Made by CHEVALLIER Bastien
** Prep'ETNA Promo 2019
*/
#include <stdio.h>
int main()
{
int i;
int x;
char e = 'E';
char t = 'T';
char n = 'N';
char a = 'A';
((char *)&x)[0] = e;
((char *)&x)[1] = t;
((char *)&x)[2] = n;
((char *)&x)[3] = a;
for (i = 0; i < 4; i++)
printf("%c\n", ((char *)&x)[i]);
return 0;
}
- 1. Operadores de desplazamiento bit a bit. Firmado y sin firmar
- 2. Enfrente de la operación OR bit a bit
- 3. en la enumeración y bit a bit operación
- 4. Python: aritmética bit a bit sin signo de 32 bit
- 5. C & PHP: ¿almacenar las configuraciones en un entero usando operadores bit a bit?
- 6. Java - desplazamiento circular usando operaciones bit a bit
- 7. Cuadrando n-bit int vs. multiplicando dos n bit ints
- 8. Operaciones bit a bit en el corto
- 9. bit a bit de sustracción en Python
- 10. Lua - Operaciones lógicas de bit a bit
- 11. Arrays de desplazamiento bit a bit
- 12. operaciones bit a bit en Postgres
- 13. OR bit a bit de las constantes
- 14. C rompecabezas de operación de bit
- 15. Indicadores de bit a bit en Delphi
- 16. Tipo de devolución de operadores bit a bit en C++
- 17. 32bit int * 32bit int = 64 bit int?
- 18. Operador bit a bit en firebird
- 19. Operadores de bit a bit y conversión de un int a 2 bytes y viceversa
- 20. Implementación de ArrayDeque.allocateElements (operaciones bit a bit)
- 21. AND bit a bit, bit a bit pregunta Incluido O, en Java
- 22. Encontrar nth bit SET en un int
- 23. uso de los operadores bit a bit para empaquetar valores múltiples en un int
- 24. bit a bit-o agregado en una subconsulta
- 25. Operador bit a bit en SQLAlchemy
- 26. PHP matriz bit a bit
- 27. ¿Qué son los operadores bit a bit?
- 28. Reemplazar bit menos significativo con operaciones bit a bit
- 29. Operaciones bit a bit en cadenas grandes en PHP
- 30. operadores bit a bit en Postgres
No se recomienda usar la palabra clave 'char' en el ejemplo de código en C –
Oh, si, eso es malo Fijo. :) – ssube
Si 'data' es un' signed char' array, '| =' y '<<' no funcionarán como lo desee. –