Hallo zusammen,
Ich versuche, ein Skript zu schreiben, das eine Eingabe entgegennimmt und sie mit einer Chiffre verschlüsselt. Dazu muss der Eingabetext binär vorliegen. Ich habe ChatGPT um Hilfe gebeten und es wird empfohlen
if ( Matches Reg Expr(input, "^[01]+$"),
Show("Valid"),
Show("Not Valid"));Das funktioniert nicht und ich versuche herauszufinden, warum. Ich versuche auch, eine Möglichkeit zu finden, zu überprüfen, ob eine Zahl binär ist, daher wäre ich für jede Hilfe sehr dankbar
Vielen Dank, dass Sie das verstanden haben @Craige_Hales !
Oben ist eine Zeile verloren gegangen:
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" );
Ich habe die automatische Vervollständigung von ChatGPT bis jetzt vermieden. Das ist interessant ... es wurde trotzdem der richtige reguläre Ausdruck gefunden.
@LatentHyena653 – Der reguläre Ausdruck von JMP gibt einen fehlenden Wert für „keine Übereinstimmung“ und andernfalls den Text der Übereinstimmung zurück. Der Test auf fehlende Werte muss mit der Funktion isMissing durchgeführt werden. Die meisten anderen Sprachen haben unterschiedliche Details zur Verwendung von Regex, daher ist dies nicht allzu überraschend.
Außerdem verfügt JMP über eine hex()-Funktion, die Text in eine Hex-Zeichenfolge umwandelt:
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";
Und wie gezeigt, kann replacement() den Hex-String in einen Binär-String umwandeln.
Beachten Sie schließlich, dass die binäre Zeichenfolge aus Einsen und Nullen tatsächlich eine Zeichenfolgedarstellung binärer Daten ist. JMP verfügt auch über einen Blob-Datentyp, wenn Sie mit tatsächlichen Binärdaten arbeiten müssen. Aber es ist viel einfacher, mit druckbaren Einsen und Nullen zu arbeiten.
Das sollte funktionieren:
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");