Foros del Web » Programando para Internet » Javascript »

como covertir una cadena de texto a su equivalencia a binario con JavaScript

Estas en el tema de como covertir una cadena de texto a su equivalencia a binario con JavaScript en el foro de Javascript en Foros del Web. Mi pregunta es si hay forma de de convertir una cadena de texto al lenguaje binario con JavaScript, no se, con eval(), new String(), parseInt()...
  #1 (permalink)  
Antiguo 10/04/2007, 12:51
 
Fecha de Ingreso: marzo-2007
Mensajes: 19
Antigüedad: 17 años, 1 mes
Puntos: 0
como covertir una cadena de texto a su equivalencia a binario con JavaScript

Mi pregunta es si hay forma de de convertir una cadena de texto al lenguaje binario con JavaScript, no se, con eval(), new String(), parseInt()
  #2 (permalink)  
Antiguo 10/04/2007, 14:07
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

loading.........


asi:

Código PHP:
function encode(input) {
    
hexOutput "";
    for (
i=0i<input.lengthi++) {
        
hexOutput hexOutput Dec2Hex(input.charCodeAt(i));
    }
    return 
hexOutput;
}

function 
Dec2Hex(Decimal) {
    var 
hexChars "0123456789ABCDEF";
    var 
Decimal 16;
    var 
= (Decimal a)/16;
    
hex "" hexChars.charAt(b) + hexChars.charAt(a);
    return 
hex;

a su hexadecimal

Y bueno convertir un hexadecimal a binario.... 1er semestre de Informática. (cosa que no recuerdo) :p


connection closed.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 10/04/2007, 17:44
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

La función que posteas, MaBoRaK:
Código PHP:
function Dec2Hex(Decimal) {
    var 
hexChars "0123456789ABCDEF";
    var 
Decimal 16;
    var 
= (Decimal a)/16;
    
hex "" hexChars.charAt(b) + hexChars.charAt(a);
    return 
hex;

Equivale a
Código PHP:
Decimal.toString(16); 
El toString actúa sobre un número y directamente te lo devuelve en tipo String y pasado a la base que indiques por argumento.


De la misma manera, toString(2) te lo pasará a binario. Sólo tienes que sacar el numerito de cada caracter y hacerle un toString(2):
Código PHP:
String.prototype.toBase=function(base) {
    for(var 
i=0dev=""i<this.lengthi++)
        
dev+= this.charCodeAt(i).toString(base);
    return 
dev;

Esta función te servirá para pasar cualquier cadena a su equivalente matemático en cualquier base (entre 2 y 36 incluídos los dos).


Y como me aburría un poco he decidido crear la función inversa, la que pasa de la cadena que creamos anteriormente a la cadena original:
Código PHP:
String.prototype.toChar=function(fromBase) {
    
//iremos cogiendo cada número, convirtiéndolo a base decimal y hallando la letra que corresponde ese número
    //no sabemos qué delimita un número en ninguna base si están escritos sin espacios, pero sabemos que en base 10 el número ha de estar entre 65(A) y 122(z) (incluiremos algunos símbolos pero a efectos nos da igual)
    
var dev="";    //guardaremos aquí las letras a devolver
    
var posIni=0posFin=1;        //posIni y posFin delimitarán el número en this
    //iremos aumentando posFin hasta que el número, convertido a base 10, esté entre 65 y 122
    
while(posFin<=this.length) {        //iremos extrayendo numeros mientas posFin no llegue al final de this
        
var convertido=this.substring(posIni,posFin);                //convertido: parte de this a estudiar
        
convertidoparseIntconvertidofromBase );                //la pasamos a base 10
        
while( Number(convertido)<65 || Number(convertido)>122 ) {        //mientras no sea una letra
            
posFin++;                                                        //aumentamos posFin
            
convertidothis.substring(posIni,posFin);                        //rehacemos convertido para volver a estudiarlo
            
convertidoparseIntconvertidofromBase );
        }
        
//en este punto convertido es un número en base 10 que representa una letra
        //convertiremos ese número a su respectivo caracter, y lo añadiremos a la cadena a devolver
        
dev+=String.fromCharCode(convertido);
        
//posIni pasará a ser posFin, y posFin será posFin+1 para buscar más números en la cadena this
        
posIni=posFinposFin++;
    }
    
//en este punto dev contendrá todos los caracteres a devolver
    
return dev;

Está muy comentado para que se entienda todo bien. De todas maneras si no se ve algo, postead. Me he apoyado en parseInt(numero,baseOriginal) para pasar un numero en base baseOriginal a base decimal.



Con estas dos funciones haremos:
Código PHP:
var cadena="derkeNuke";
var 
base=16;
var 
laConvertida=cadena.toBase(base);
var 
laOriginal=laConvertida.toChar(base);
document.write"La cadena <b>"+cadena+"</b> convertida a base "+base+" da como resultado <b>"+laConvertida+"</b>, que si la volvemos a pasar a original obtendremos <b>"+laOriginal+"</b>."); 
Obteniendo como resultado:
Código:
La cadena derkeNuke convertida a base 16 da como resultado 6465726b654e756b65, que si la volvemos a pasar a original obtendremos derkeNuke.

Espero que os guste el script


Saludos a los dos!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 10/04/2007, 18:15
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Cita:
La cadena derkeNuke convertida a base 16 da como resultado 6465726b654e756b65, que si la volvemos a pasar a original obtendremos derkeNuke.
alguna pregunta?? jajajjajaj
excelente codigo derkeNuke
al parecer no te gusta programar nadita nadita
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #5 (permalink)  
Antiguo 10/04/2007, 18:32
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Gracias Shiryu_Libra!!

La verdad es que detesto programar, pero tengo al amo detrás dándome latigazos para que acabe rapidito...
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 11/04/2007, 01:10
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Hola:

Pues veo que en vez de hacer una conversión binaria, es una conversión hexadecimal...

Bueno, binario es una combinación de unos y ceros... la propuesta mía:

Código:
String.prototype.toBin = function() {
  function binario(x, posi) {
    if (posi > 0) return binario(parseInt(x / 2), posi - 1) + (x % 2).toString();
    else return (x % 2);
  }
cadena = "";
for (i = 0, total = this.length; i < total; i ++)
 cadena += binario(this.charCodeAt(i), 7);
return cadena;
}
Y como prueba alert('Hola'.toBin())

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 11/04/2007, 07:34
 
Fecha de Ingreso: marzo-2007
Mensajes: 19
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Muchas gracias por vuestra ayuda, y sobre todo a caricatos, que ha hecho lo que realmente queria, que era convertir strings a lenguaje binario, dicho de otra manera la equivalencia de un texto a ceros y unos, y gracias a todos por vuestra ayuda y por cederme vuestro tiempo, que seguramente el error ha sido mio por no explicarme bien.
Saludos de parte de _jesic@=01011111
  #8 (permalink)  
Antiguo 11/04/2007, 08:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Cita:
Iniciado por _jesic@ Ver Mensaje
Muchas gracias por vuestra ayuda, y sobre todo a caricatos, que ha hecho lo que realmente queria, que era convertir strings a lenguaje binario, dicho de otra manera la equivalencia de un texto a ceros y unos, y gracias a todos por vuestra ayuda y por cederme vuestro tiempo, que seguramente el error ha sido mio por no explicarme bien.
Saludos de parte de _jesic@=01011111
Hola:

Agradezco el agradecimiento (vaya la redundancia)... y para contestar revisé con más detenimiento el código de derkenuke que me pareció muy interesante; pero basándome en que toString() no solo se aplica a lo números sino a todos los objetos, no le hice mucho caso a la variante propuesta. En esta nueva revisión la he encontrado muy instructiva

Otra vez he aprendido algo de otro gran maestro.

saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 11/04/2007, 08:13
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

que onda, tengo una dudilla, Caricatos, me puedes explicar esta linea ?

String.prototype.toBin = function()

que es lo que hace hay?
__________________
Wow! No se que decir...
  #10 (permalink)  
Antiguo 11/04/2007, 08:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Cita:
Iniciado por zyon Ver Mensaje
que onda, tengo una dudilla, Caricatos, me puedes explicar esta linea ?

String.prototype.toBin = function()

que es lo que hace hay?
Hola:

Esa línea crea una función (método) asociado a las cadenas... entonces, siempre que a una cadena le pones la coletilla "toBin()", lo que se muestra, o mejor dicho, lo que se envía al solicitante (puede tratarse de una salida o cualquier otra cosa como alguna función) es lo que aparece detrás del return en este caso.

saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 11/04/2007, 09:18
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Cita:
Iniciado por _jesic@ Ver Mensaje
Muchas gracias por vuestra ayuda, y sobre todo a caricatos, que ha hecho lo que realmente queria, que era convertir strings a lenguaje binario, dicho de otra manera la equivalencia de un texto a ceros y unos
Grrr, ¿acaso .toBase(2) de mi código no te valía?


PD: No me enfado _jesic@, pero me hubiera gustado algún comentario.. por aquello de la voluntad...
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #12 (permalink)  
Antiguo 11/04/2007, 09:35
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

loading..........


Cita:
Iniciado por derkenuke Ver Mensaje
Grrr, ¿acaso .toBase(2) de mi código no te valía?


PD: No me enfado _jesic@, pero me hubiera gustado algún comentario.. por aquello de la voluntad...
jejeje hermano, esta mujer no ha leido todo el POST y se fue hasta el final :p

Yo reconosco tu trabajo y realmente me ha sorprendido ;) y lo he añadido a mi repositorio de HERRAMIENTAS... porque pienso tatuarme todo el cuerpo con la licencia GPL en binario .. (sin comentarios)


connection closed.
__________________

Maborak Technologies
  #13 (permalink)  
Antiguo 11/04/2007, 09:52
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Hola:

No se trata de defender a Jesica, pero probando en explorer los métodos toString(2) en un número, y toBase(2)... ambos me han devuelo solo los bits significativos, y no 8 bits (los clásicos de un byte)... por lo que son soluciones "retocables" ¿Los han probado...?

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #14 (permalink)  
Antiguo 11/04/2007, 11:13
 
Fecha de Ingreso: marzo-2007
Mensajes: 19
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Lo siento derkenuke , pero yo de programacion JavaScript se lo justo, y he intentado probar con tu codigo, pero no se como para que me apareca en pantalla con un alert() o con document.write(), pero de ante mano, ya os he dicho a todos que os agradezco un monton por vuestra ayuda y por colaborar en mi pregunta, se que todos me han regalado no un granito de conocimiento si no un monton de sacos de granitos de ayuda jijijiji, y se que todos sabeis programar muy bien bueno algunos abligados jejejejeje.
Saludos derkenuke lo siento pero, espero que con esto quedes satisfecho for (var gracias = 0; gracias < 10000000000000; gracias++){document.write(gracias)}
  #15 (permalink)  
Antiguo 11/04/2007, 11:30
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

amigos, un saludo....

decidan ustedes....

derkenuke letras

caricatos alert

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #16 (permalink)  
Antiguo 11/04/2007, 13:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 19
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Esto si es un foro de discusiones, donde se opina, se suguiere, se observa y se compara, visitar esta pagina: hwagm.elhacker.net/php/sneak.php y a ver si alguien me da una conclusion por que yo ya me he hecho un lio.
  #17 (permalink)  
Antiguo 11/04/2007, 13:03
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

loading............

cadena += binario(this.charCodeAt(i), 7);

porque 7? :S


connection closed.
__________________

Maborak Technologies
  #18 (permalink)  
Antiguo 11/04/2007, 13:13
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

loading..........


interesante....

Hola en binario segun:
Caricatos: 01101000011011110110110001100001
Derkenuke:1101000110111111011001100001

Y convertidos a string por la funcion DERKENUKE:
Caricatos:hola
Derkenuke:hola

connection closed.
__________________

Maborak Technologies
  #19 (permalink)  
Antiguo 11/04/2007, 13:13
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Hola:

_jesic@: El enlace parece estar roto... revísalo:

MaBoRaK: Se trata de una función recursiva que se corta cuando ese parámetro llega a 0... y representan los bits 0..7 (la verdad es que no estudié el código en profundidad)
Tal vez se pueda mejorar...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #20 (permalink)  
Antiguo 11/04/2007, 14:04
 
Fecha de Ingreso: marzo-2007
Mensajes: 19
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

A este foro le estoy cogiendo el gustillo que la cosa cada vez se va poniendo mas caliente, ya que el objetivo es llegar a una solucion bilateral, donde las soluciones tienen que ser sinonimo de un consenso claro... bueno, bueno, bueno ya paro que ya me parezco a los politicos y eso aqui no pega, que yo lo unico que quiero saber como convertir texto plano, a codigo binario. Y el enlace esta roto porque a mi no me da la opcion mandar vinculos completos, poner h t t p :// delante de hwagm.elhacker.net/php/sneak.php.

imprimir.en.pantalla("Saludos"); // xDD
  #21 (permalink)  
Antiguo 11/04/2007, 14:12
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

el punto en todo caso, es de que cualquiera de los dos codigos te permiten realizar tu funcion... o el proposito que buscas
suerte
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #22 (permalink)  
Antiguo 11/04/2007, 15:57
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Hola:

La verdad es que se trata de un tema curioso. Mi intención era considerar los caracteres dentro del rango de los bytes de toda la vida (8 bits), pero no tengo la menor idea del rango que puedan tener los juegos de caracteres actuales (miles tal vez)...

Con el sistema que planteé se calculan solo 8 bits, pero con letras como la del euro (& euro;) se pasa bastante del rango, y por eso pensé retocar el código:

Código:
  function binario(x) {
    ch = "";
    while (x > 0) {ch = (x % 2) + ch; x = parseInt(x / 2)};
    return ch;
  }
En este caso no se indica el número de bits, porque solo se calculan los significativos, y el resultado es el mismo que poniendo toString(2)...

Una mala noticia es que sería imposible (creo) conseguir un algoritmo inverso.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #23 (permalink)  
Antiguo 11/04/2007, 20:51
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Eso es, es lo que explica caricatos. Con su función binario:
Código PHP:
    function binario(xposi) {
        if (
posi 0) return binario(parseInt(2), posi 1) + (2).toString();
        else return (
2);
    } 
Conseguimos pasar un número de decimal a binario con (posi+1) caracteres fijos (rellenando con ceros a la izquierda), entonces convertir una "h" con mi código y con su código devuelven lo mismo, sólo que él rellena de ceros a la izquierda hasta completar (posi+1) posiciones:
Código:
// "h" convertida
01101000    //caricatos
 1101000    //derkeNuke
Es lo mismo pero con un cero delante para completar.


Si se devuelve lo mismo al volver a traducir con mi función toChar no es un motivo de coincidencia. De hecho la función toChar tiene un bucle principal que hace lo siguiente:
Código:
// cadena a convertir, 01101000:
- cojo desde 0 a 1: "0". Paso de binario a decimal = 0. ¿Esta entre 65 y 122 (letras...)? No, luego coger desde 0 a 2.
- cojo desde 0 a 2: "01". Paso de bin a dec = 1. ¿Es letra? No, luego cogemos (0,3)
- cojo desde 0 a 3: "011". A dec = 3. No es letra.
- cojo (0,4): "0110". dec=6. No es letra.
- cojo (0,5): "01101". dec=13. No es letra.
- cojo (0,6): "011010". dec=26. No es letra.
- cojo (0,7): "0110100". dec=52. No es letra.
- cojo (0,8): "01101000". dec=104. Sí que está en el rango 65-122, luego es letra. ¿Qué letra es 104?, Pues la h. Añadimos una h al resultado.

- como hemos cogido (0,8) y 8 es cadena.length ya no puedo coger más, luego la cadena resultado es "h".
Se comprueba fácilmente cómo 01101000 y 1101000 (sin el 0 inicial) tienen el mismo valor en decimal porque el caracter n de valor a en binario representa en decimal a*(2^n) (supongo que sabréis pasar de binario a decimal:
011001: 0*(2^5)+1*(2^4)+1*(2^3)+0*(2^2)+0*(2^1)+1*(2^0)=16 +8+1=25 )


Luego al traducir 01101000 y 1101000 da 104 de todas maneras, la letra h.

Lo malo es al concatenar
Código:
h = 01101000 ó 1101000
o = 01101111 ó 1101111
l = 01101100 ó 1101100
a = 01100001 ó 11000011
luego "hola" = 01101000011011110110110001100001 ó 1101000110111111011001100001
Depende si colocamos los ceros para completar el octeto o no.
Pero vamos, que al convertir sería lo mismo.

Personalmente quizás sería mejor la opción de caricatos, y añadiendo un espacio entre octeto y octeto para diferenciar las letras:
Código PHP:
String.prototype.toBase=function(base) {
    for(var 
i=0dev=""i<this.lengthi++) {
        var 
predev=this.charCodeAt(i).toString(base);    //el número en base cambiada
        
while(predev.length<8predev="0"+predev;        //añadimos tantos ceros a la izquierda como sean necesarios para completar el octeto
        
dev+= predev+" ";
    }
    return 
dev;

// "hola" en binario sería "hola".toBase(2) -->
// 01101000 01101111 01101100 01100001 
Y al convertirlo de nuevo sería chupado porque no tendríamos que identificar los caracteres:
Código PHP:
String.prototype.toChar=function(fromBase) {
    var 
dev="";
    var 
numeros=this.split(" ");
    for(var 
a=0a<numeros.lengtha++) {
        var 
numDecimal=parseIntnumeros[a], fromBase );
        
dev+=String.fromCharCode(numDecimal);
    }
    return 
dev;


Bueno, por fin, código completo para copiar al editor...
Código PHP:
<script language="javascript" type="text/javascript">

function 
e(q,br) {
    
document.body.appendChilddocument.createTextNode(q) );
    if(
br!==0document.body.appendChilddocument.createElement("BR") );
}

String.prototype.toBase=function(base) {
    for(var 
i=0dev=""i<this.lengthi++) {
        var 
predev=this.charCodeAt(i).toString(base);    //el número en base cambiada
        
while(predev.length<8predev="0"+predev;        //añadimos tantos ceros a la izquierda como sean necesarios para completar el octeto
        
dev+= predev+" ";
    }
    return 
dev;
}  

String.prototype.toChar=function(fromBase) {
    var 
dev="";
    var 
numeros=this.split(" ");
    for(var 
a=0a<numeros.lengtha++) {
        var 
numDecimal=parseIntnumeros[a], fromBase );
        
dev+=String.fromCharCode(numDecimal);
    }
    return 
dev;
}



var 
cad="hola";
var 
base=2;
var 
conv=cad.toBase(base);
var 
reConv=conv.toChar(base);
ecad+" convertido a base "+base+" es "+conv );
econv+" reconvertido a caracteres es "+reConv );

</script> 

PD: Se me ha ocurrido que podía utilizar expresiones regulares para traducir de cualquier base a letras:
Código:
String.prototype.toChar=function(fromBase) {
	return this.replace(/(([^\s])+\s)/g, function($1) {
		return String.fromCharCode( parseInt($1,fromBase) );	//$1 es el grupo que convertiremos
	} );
}
Será un poco más rápida la conversión... pero creo que ahí me he ido demasiado... mejor me voy ya a la cama...


PD2: Ojo que en binario el grupo de caracteres es 8, el octeto queda muy bonito. Pero si convertimos a base 36 quedan cosas como 0000002w, que sigue funcionando, pero no se yo hasta qué punto será correcto...



En fin, eso, a dormir ya que las drogas son malas, y odio el javascript.



Un saludo a todos!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.

Última edición por derkenuke; 12/04/2007 a las 21:34 Razón: La etiqueta [PHP] me quitaba las contrabarras en un código! Sustituidas por [CODE]
  #24 (permalink)  
Antiguo 11/04/2007, 21:01
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

ammm ....... este ............. mmm .............aja
no pues si ............pero si...


once again my friend
without words
"sin palabras"
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #25 (permalink)  
Antiguo 12/04/2007, 12:24
 
Fecha de Ingreso: marzo-2007
Mensajes: 19
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Hola de nuevo, por curiosidad, por anciedad de saber y por compartir conocimiento, esta noche pasada he buscado en profundidad (120 minutos), pero muy en profundidad en varios buscadores de internet de como sacar el binario de una cadena de texto (ASCII) algunos me parece que no estan hechos con JavaScript, pero, curiosamente todos coinciden en el mismo resultado (hola=01101000011011110110110001100001), algunos de ellos realizan multiples conversiones, aqui os pongo las direciones, sin el h t t p :// w w w, o h t t p :// por delante, que ya hos he dicho que ami no me dan esa opcion de mandar enlaces:

theskull.com/javascript/ascii-binary.html
hwagm.elhacker.net/php/sneak.php
nickciske.com/tools/binary.php
vortex.prodigynet.co.uk/misc/ascii_conv.html
roubaixinteractive.com/PlayGround/Binary_Conversion/Binary_To_Text.asp
yellowpipe.com/yis/tools/encrypter/index.php
dyersweb.com/conversion/binary-ascii/


Que sale lo mismo que dece derkenuke, que nos ha dado una profunda explicacion sobre el tema con base en lo que nos ha planteado caricatos.


Saludilllos y gracias a TODOS

Última edición por _jesic@; 12/04/2007 a las 12:47
  #26 (permalink)  
Antiguo 12/04/2007, 16:11
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Cita:
Iniciado por _jesic@ Ver Mensaje
Hola de nuevo, por curiosidad, por anciedad de saber y por compartir conocimiento, esta noche pasada he buscado en profundidad (120 minutos), pero muy en profundidad en varios buscadores de internet de como sacar el binario de una cadena de texto (ASCII) algunos me parece que no estan hechos con JavaScript, pero, curiosamente todos coinciden en el mismo resultado (hola=01101000011011110110110001100001), algunos de ellos realizan multiples conversiones, aqui os pongo las direciones, sin el h t t p :// w w w, o h t t p :// por delante, que ya hos he dicho que ami no me dan esa opcion de mandar enlaces:

theskull.com/javascript/ascii-binary.htmlhwagm.elhacker.net/php/sneak.php
nickciske.com/tools/binary.php
vortex.prodigynet.co.uk/misc/ascii_conv.html
roubaixinteractive.com/PlayGround/Binary_Conversion/Binary_To_Text.asp
yellowpipe.com/yis/tools/encrypter/index.php
dyersweb.com/conversion/binary-ascii/


Que sale lo mismo que dece derkenuke, que nos ha dado una profunda explicacion sobre el tema con base en lo que nos ha planteado caricatos.


Saludilllos y gracias a TODOS
Hola:

Interesantes enlaces, lastima que no estén en Español.
Lo que he notado es que en todos los ejemplos se trata de ASCII, pero las tendencias actuales son pasar de la restricción de los 8 bits...

Creo que es un interesante caso de estudio...

Por cierto, retoqué el mensaje de jesica para que se enlacen desde el contenido.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #27 (permalink)  
Antiguo 12/04/2007, 17:27
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Ok, pues nos quedamos con la idea de no quitar los ceros, y completar el octeto en binario.

¿Y en los demas? En hexadecimal por ejemplo: ¿hay que rellenar con ceros hasta cumplir con un número de caracteres? ¿Lo sabéis?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #28 (permalink)  
Antiguo 12/04/2007, 21:47
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Juas, he estado revisando...

Ojo el código inteligente de http://www.theskull.com/javascript/ascii-binary.html

Código PHP:
//Ascii -- Binary Code
if (let ==  "A") {letbin letbin sep '01000001'}
if (
let ==  "B") {letbin letbin sep '01000010'}
if (
let ==  "C") {letbin letbin sep '01000011'}
if (
let ==  "D") {letbin letbin sep '01000100'}
if (
let ==  "E") {letbin letbin sep '01000101'}
if (
let ==  "F") {letbin letbin sep '01000110'}
.
.
.
if (
let ==  "÷") {letbin letbin sep '11110111'}
if (
let ==  "ø") {letbin letbin sep '11111000'}
if (
let ==  "ù") {letbin letbin sep '11111001'}
if (
let ==  "ú") {letbin letbin sep '11111010'}
if (
let ==  "û") {letbin letbin sep '11111011'}
if (
let ==  "û") {letbin letbin sep '11111100'}
if (
let ==  "ý") {letbin letbin sep '11111101'}
if (
let ==  "þ") {letbin letbin sep '11111110'}
if (
let ==  "ÿ") {letbin letbin sep '11111111'
Yo no sé quién se habrá dedicado a sacar ese código, pero... así cualquiera, eh? Es que estan toditas las letras, hasta la 11111111... Y lo bueno es que para traducir tiene la misma tabla, pero al revés!

Código PHP:
if (let ==  "01000001") {letasc letasc 'A'}
if (
let ==  "01000010") {letasc letasc 'B'}
if (
let ==  "01000011") {letasc letasc 'C'}
if (
let ==  "01000100") {letasc letasc 'D'}
.
.
.
if (
let ==  "11111100") {letasc letasc 'û'}
if (
let ==  "11111101") {letasc letasc 'ý'}
if (
let ==  "11111110") {letasc letasc 'þ'}
if (
let ==  "11111111") {letasc letasc 'ÿ'

Ni siquiera se ha dignado a meterlo en un array y comerse la cabeza... (por cierto, el código no es de la web, es un copypaste del autor G. Marshall Brown.

Eso es programar y lo demás son tonterías...
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #29 (permalink)  
Antiguo 12/04/2007, 23:00
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

eso si es tener tiempo libre para realizar ese codigo
... ahora imaginense meterlo en array.....
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #30 (permalink)  
Antiguo 12/04/2007, 23:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: como covertir una cadena de texto a su equivalencia a binario con JavaScript

Hola:

Se me ocurrió que para poder reconocer las letras, podría poner un carácter distinto de 0/1 como delimitador, de esa forma se reconocerían los caracteres, también sería innecesario completar los 8 bits (aunque en el ejemplo adjunto se contemple) y sobre todo, se podría usar tecnología inversa...

Código:
<html>
<head>
<title>
	binario
</title>
<script type="text/javascript">
String.prototype.toChar = function() {
// La cadena es del tipo generado por toBin()...
// cada carácter se separa por "-"
 function Decimal(bin) {
  b = bin.split("").reverse();
  contador = 0;
  for (var i = 0, total = b.length; i < total; i ++)
   contador += Math.pow(2, i) * parseInt(b[i]);
  return contador;
 }
 palabra = "";
 c = this.split("-");
 for (var i = 0, total = c.length; i < total; i ++)
  palabra += String.fromCharCode(Decimal(c[i]));
 return palabra;
}
String.prototype.toBin = function() {
  function binario(x) {
    ch = "";
    while (x > 0) {ch = (x % 2) + ch; x = parseInt(x / 2)};
    while (ch.length < 8) ch = "0" + ch;
    return ch;
  }
cadena = new Array();
for (i = 0, total = this.length; i < total; i ++)
 cadena[cadena.length] = binario(this.charCodeAt(i), 7);
return cadena.join("-");
}
</script>
<body onload="alert('€ hola'.toBin().toChar() + ' = ' + '€ hola'.toBin())">
</body>
</html>
Hace algunos años, hice una página donde se generaban todas las letras con un script: Generador de Fórmulas Matemáticas y Lenguaje HTML, pinchando sobre letras se abre un popup con todas las letras, y pinchando sobre estas se devuelve la codificación html correspondiente... también se muestra el código al posarse con el ratón (por el atributo title)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:57.