Skip to main content

C++ – ¿Cómo ocultar 2 caracteres en un número entero?

En el siguiente ejemplo vamos a ver cómo ocultar 2 caracteres (letras) en un número entero utilizando máscaras y bits con el programa Zinjal.

CÓDIGO

#include <iostream>
using namespace std;
void ingresoDatos(unsigned char &a, unsigned char &b);
void empcaCaracteres(unsigned char a,unsigned char b);
void imprimirChar(unsigned char n);
void imprimeBits(unsigned int n);
int main(int argc, char *argv[]) {
 unsigned char a,b;
 ingresoDatos(a,b);
 empcaCaracteres(a,b);
 return 0;
}

void ingresoDatos(unsigned char &a, unsigned char &b){
 cout<<"Ingrese primer caracter: ";
 cin>>a;
 cout<<"Ingrese segundo caracter: ";
 cin>>b; 
}

void empcaCaracteres(unsigned char a,unsigned char b){
 cout<<"Caracter 1 en bits: ";
 imprimirChar(a);
 cout<<"\nCaracter 2 en bits: ";
 imprimirChar(b);
 unsigned int n=0x0;
 n=((a|n)<<8)|b; 
 cout<<"\nCaracteres empacados en un entero: "<<n<<endl;
 imprimeBits(n);
}

void imprimirChar(unsigned char n){ 
 unsigned char mask= 0x80;
 for(int i=1;i<=8;i++){
  if((n&mask)>0){
   cout<<1;
  }else{
   cout<<0;
  }
  mask=mask>>1;
  if(i%4==0)cout<<" ";  
 } 
}

void imprimeBits(unsigned int n){
 unsigned int mask= 0x8000;
 for(int i=1;i<=16;i++){
  if((n&mask)>0){
   cout<<1;
  }else{
   cout<<0;
  }
  mask=mask>>1;
  if(i%4==0)cout<<" ";  
 }
}

Deja un comentario

A %d blogueros les gusta esto: