Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Una ayudita porfavor

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Una ayudita porfavor Responder citando

Gracias guapo, bueno ahora no se si me podreis ayudar: resulta que me dan una seri ede numeros y necesito codificarlos tal q así:

Values Category Bits for the value
0______________ 0____________-
-1,1 _____________1 __________0,1
-3,-2,2,3 __________2 ________00,01,10,11
-7,-6,-5,-4,4,5,6,7___3____000,001,010,011,100,101,110,111

y así con todos, porfavor es mu urgente kien sepa algo q lo ponga en el maravilloso foro. Gracias!
Volver arriba
Mensaje    Asunto: Re: Una ayudita porfavor Responder citando

Por que no te explicas un poco mejor
Volver arriba
Mensaje    Asunto: Responder citando

Vamos a ver se trata de la codificación huffman tengo q codificar muchas cosas y es mucho mas complicado pero sabiendo lo q he preguntado ya sabría hacerlo, a ver si tengo una serie de numeros, por ejemplo un arreglo de numerosy tengo qw ir codificando uno por uno en binario e ir metiendolos en un archivo q será un jpeg, como lo hago?
Volver arriba
Mensaje    Asunto: Responder citando

Bueno parece que nadie sabe na jo Sad, miren si yo os doi una serie de numeros y os digo qw la metais en un archivo en binario como lo hariais ????
Volver arriba
Mensaje    Asunto: Responder citando

Mirad he pensado algo como esto:

void ConvDecBin(int nValor,FILE *f)
{

AnsiString cBin = "";

while (nValor > 1)
{
cBin = IntToStr(nValor % 2) + cBin;
nValor = INT(nValor / 2);
}
cBin = IntToStr(nValor) + cBin;
fwrite(cBin.c_str(),4,1,f);

}
Aunque los numeros negativos no se graban en binario tengo q arreglarlo , pero no se si eso realemnte es binario pq como dicen opor ahi q si metes un 1 en ascii es otro y realmente no es un bit no tengo ni idea . ¿pq respondeis cosas tan dificiles y ami nada eh?? pq soy chica?jeje es broma.espero vuestra ayuda
Volver arriba
Mensaje    Asunto: Responder citando

ya se pasar los números a binario pero en cadena de caracteres :

0______________ 0____________-
-1,1 _____________1 __________0,1
-3,-2,2,3 __________2 ________00,01,10,11
-7,-6,-5,-4,4,5,6,7___3____000,001,010,011,100,101,110,111

/*****************************************************/
AnsiString num;
num=ConvDecBin(16) me daria resultado num="10000" lo q me gustaria es apartir de esa informacion , o si se puede hacer de otra manera decirmelo, bueno apartir de esa informacion registrar en un fichero binario el bit 1 bit 0 , 0 , 0 , 0 es decir q ocupe 5 bits(en este caso el 16), pq si yo registro directamente el "1""0""0""0""0" no seria 5 bits si no 5*8bytes .AYUDADMEEEEEE.GRACIASSSS.

/******************************************************/




int Categoria(int a) /*correcto*/
{
double res;
if (a<0)
{
a=a-2*a;
}
if (a!=0)
{
res=log(a)/log(2);
res=int(res);
res=res+1;
}
else
{
res=0;
}
return res;
}

/******************************************************/

AnsiString ConvDecBin(int nValor) /*correcto*/
{ int l,cat;
AnsiString cBin = "";
if (nValor>0)
{
while (nValor > 1)
{
cBin = IntToStr(nValor % 2) + cBin;
nValor = INT(nValor / 2);
}
cBin = IntToStr(nValor) + cBin;
}
else if (nValor<0)
{ cat=Categoria(nValor);
nValor=pow(2,cat)-1+nValor;
while (nValor > 1)
{
cBin = IntToStr(nValor % 2) + cBin;
nValor = INT(nValor / 2);
}
cBin = IntToStr(nValor) + cBin;

l=cBin.Length();
if (l<cat)
{ while (l<cat)
{
cBin="0"+cBin;
l=l+1;
}
}
}
else
{
cBin="0";
}
return cBin;
}
Volver arriba
Mensaje    Asunto: Responder citando

NADIE SABE GUARDAR EN UN ARCHIVO 3 bits???solo eso!!!!!!!!
Volver arriba
Mensaje    Asunto: Responder citando

Hola.

Vamos a ver, creo que no te entendido.

Igual estoy equivocado, pero tu al guardar, guardas 1 byte = 8 bits que van desde el 00 al FF (0 a 255). Al guardar un 1 en realidad guardas 0000 0001 = 01.

Otra cosa es que tu te lo codifiques, es decir si tienes 10000 (binario) = 0001 0000 = 10 (en hexadecimal).

No se si voy bien o voy mal .....

Resumiendo, creo no puedes guardar solo 3 bits.... lo minimo es 1 byte.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Joer!
Volver arriba
Mensaje    Asunto: Responder citando

Siguiendo la logica, se me hace mas compresible, guardar un 1 byte que represente, el codigo que tu estas enviando...
por ejemplo 16 en binaro exacatemente es "10000", pero recuerda esta es la representacion, como nosotoros lo vemos..

que te parece si en lugar de guardar los 5 numeros, lo respresentas, como un caracter del codigo ascii, asi el numero de 16, lo mandas como un byte, del tipo char...
y en el archivo binario en lugar de poner los 5 digitios
"1" "0""0""0""0""0" = los representas por el caracter ascii Numero 16..
asi grabas el valor y estas ocupando un byte,
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Efectivamente César comprendo lo que dices, pero es q después necesariamente necesito guardar números cuya codificación no tiene lógica es decir imaginate q el 16 lo kiero codificar con 010101 así mismo por ejemplo.
Volver arriba
Mensaje    Asunto: Responder citando

Bueno el numero que me muestras no es 16 es 21, y ese es otro codigo ascii, si tienes msn, te puedes conectar conmigo...
Volver arriba
Mensaje    Asunto: Responder citando

El de arriba soy yo.. ji , se me fue el login
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.