모두 안녕,
입력을 받아 암호로 암호화하는 스크립트를 작성하려고 합니다. 그러기 위해서는 입력 텍스트가 바이너리여야 합니다. 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에는 텍스트를 16진수 문자열로 변환하는 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";
그리고 표시된 대로 대체()는 16진수 문자열을 2진수 문자열로 변환할 수 있습니다.
마지막으로 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");