Salut à tous,
J'essaie d'écrire un script qui prend une entrée et la crypte avec un chiffre. Pour ce faire, le texte saisi doit être en binaire. J'ai demandé de l'aide à ChatGPT et il m'a recommandé
if ( Matches Reg Expr(input, "^[01]+$"),
Show("Valid"),
Show("Not Valid"));Cela ne fonctionne pas et j'essaie de comprendre pourquoi. J'essaie également de trouver un moyen de vérifier si un nombre est en binaire, donc toute aide serait grandement appréciée
J'ai perdu une ligne en haut :
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" );
J'ai évité la saisie semi-automatique de ChatGPT jusqu'à présent. C'est intéressant... il a quand même trouvé la bonne regex.
@LatentHyena653 - L'expression régulière de JMP renvoie une valeur manquante pour "aucune correspondance" et le texte de la correspondance dans le cas contraire. Le test des valeurs manquantes doit être effectué avec la fonction isMissing. La plupart des autres langages auront des détails différents sur l'utilisation des regex, ce n'est donc pas trop surprenant.
De plus, JMP dispose d'une fonction hex() qui convertira le texte en chaîne hexadécimale :
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";
Et, comme indiqué, substitut() peut convertir la chaîne hexadécimale en chaîne binaire.
Enfin, notez que la chaîne binaire de 1 et de 0 est en fait une représentation sous forme de chaîne de caractères de données binaires. JMP dispose également d'un type de données blob si vous devez travailler avec des données binaires réelles. Mais il est beaucoup plus facile de travailler avec des 1 et des 0 imprimables.
Cela devrait fonctionner :
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");