大家好,
我正在嘗試編寫一個腳本,該腳本接受輸入並用密碼加密。 為此,輸入文字必須是二進位的。 我向 ChatGPT 尋求幫助,它推薦
if ( Matches Reg Expr(input, "^[01]+$"),
Show("Valid"),
Show("Not Valid"));這是行不通的,我正在嘗試找出原因。 我還試圖找出一種方法來檢查數字是否為二進制,因此任何幫助將不勝感激
頂部遺失了一行:
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" );
直到現在我才避免使用 ChatGPT 的自動完成功能。 這很有趣......無論如何它找到了正確的正規表示式。
@LatentHyena653 - JMP 的正規表示式傳回「不符合」的缺失值,否則傳回符合的文字。 缺失值測試必須使用 isMissing 函數完成。 大多數其他語言對於使用正規表示式都有不同的細節,因此這並不奇怪。
此外,JMP 有一個 hex() 函數,可將文字轉換為十六進位字串:
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";
並且,如圖所示,substitute() 可以將十六進位字串轉換為二進位字串。
最後,請注意,1和0的二進位串實際上是二進位資料的字串表示。 如果您需要使用實際的二進位數據,JMP 還具有 blob 資料類型。 但使用可列印的 1 和 0 要容易得多。
這應該有效:
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");