Oigan todos,
Estoy intentando escribir un script que tome una entrada y la cifre con un cifrado. Para hacer eso, el texto de entrada debe estar en binario. Le pedí ayuda a ChatGPT y me recomendó
if ( Matches Reg Expr(input, "^[01]+$"),
Show("Valid"),
Show("Not Valid"));Eso no funciona y estoy tratando de descubrir por qué. También estoy tratando de encontrar una manera de comprobar si un número está en binario, por lo que cualquier ayuda sería muy apreciada.
Se perdió una línea en la parte superior:
CheckIfBinary = Function( {input},
{isbinary},
If( //If the string only contains 0 and 1 and is at least 1 character long
!Is Missing( Regex( input, "^[01]+$" ) )
, //then return 1
isbinary = 1
, //otherwise return 0
isbinary = 0
);
Return( isbinary );
);
CheckIfBinary( "123" );
CheckIfBinary( "10" );
He evitado el autocompletado de ChatGPT hasta ahora. Eso es interesante... de todos modos encontró la expresión regular correcta.
@LatentHyena653 - La expresión regular de JMP devuelve un valor faltante para "no hay coincidencia" y el texto de la coincidencia en caso contrario. La prueba de valores faltantes se debe realizar con la función isMissing. La mayoría de los demás idiomas tendrán detalles diferentes sobre el uso de expresiones regulares, por lo que no es demasiado sorprendente.
Además, JMP tiene una función hex() que convertirá el texto en una cadena hexadecimal:
hexData = hex("ABC");
binaryData = substitute(hexData,
"0","0000",
"1","0001",
"2","0010",
"3","0011",
"4","0100",
"5","0101",
"6","0110",
"7","0111",
"8","1000",
"9","1001",
"A","1010",
"B","1011",
"C","1100",
"D","1101",
"E","1110",
"F","1111",
"????"
);
show(hexData,binaryData);
// hexData = "414243";
// binaryData = "010000010100001001000011";
Y, como se muestra, sustituto() puede convertir la cadena hexadecimal en una cadena binaria.
Finalmente, observe que la cadena binaria de unos y ceros es en realidad una representación de cadena de caracteres de datos binarios. JMP también tiene un tipo de datos blob si necesita trabajar con datos binarios reales. Pero es mucho más fácil trabajar con unos y ceros imprimibles.
Esto debería funcionar:
If( //If the string only contains 0 and 1 and is at least 1 character long
!is missing(regex( input, "^[01]+$" ))
, //then return 1
isbinary= 1
, //otherwise return 0
isbinary=0
);
return(isbinary);
);
CheckIfBinary("123");
CheckIfBinary("10");