콘텐츠로 이동

TBEL 헬퍼 함수

TBEL에는 인코딩, 바이트 조작, 16진수 변환, 날짜·시간, 지오펜싱을 위한 다양한 내장 헬퍼 함수가 있습니다. 언어 문법과 데이터 유형은 언어 가이드를 참고하세요.

2진 문자열로 Base64 인코딩된 ASCII 문자열을 만듭니다.

매개변수형식설명
inputString인코딩할 2진 문자열

반환: String — Base64로 인코딩된 문자열.

var encodedData = btoa("Hello, world"); // encode a string
var decodedData = atob(encodedData); // decode the string

Base64로 인코딩된 문자열을 2진 문자열로 디코딩합니다.

매개변수형식설명
inputStringBase64로 인코딩된 문자열

반환: String — 디코딩된 2진 문자열.

var encodedData = btoa("Hello, world");
var decodedData = atob(encodedData); // "Hello, world"

double 값을 지정한 정밀도에서 가장 가까운 값으로 반올림합니다.

매개변수형식설명
valuedouble반올림할 값
precisionint소수 자릿수

반환: double — 반올림한 값.

toFixed(0.345, 1); // 0.3
toFixed(0.345, 2); // 0.35

double 값을 가장 가까운 정수로 반올림합니다.

매개변수형식설명
valuedouble반올림할 값

반환: int — 반올림한 정수.

toInt(0.3); // 0
toInt(0.5); // 1
toInt(2.7); // 3

문자열을 바이트 리스트로 바꿉니다.

매개변수형식설명
inputString바꿀 문자열
charsetNameString선택 사항. 문자 집합(기본값: UTF-8)

반환: List — 바이트 값 리스트.

stringToBytes("hello world");
// [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
var base64Str = "eyJoZWxsbyI6ICJ3b3JsZCJ9";
var bytesStr = atob(base64Str);
stringToBytes(bytesStr);
// [123, 34, 104, 101, 108, 108, 111, 34, 58, 32, 34, 119, 111, 114, 108, 100, 34, 125]
stringToBytes("hello world", "UTF8");
// [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]

바이트 리스트로 문자열을 만듭니다.

매개변수형식설명
bytesListList바이트 값 리스트
charsetNameString선택 사항. 문자 집합(기본값: UTF-8)

반환: String — 디코딩된 문자열.

var bytes = [0x48, 0x45, 0x4C, 0x4C, 0x4F];
bytesToString(bytes); // "HELLO"

bytesToString의 별칭입니다.

바이트 리스트를 JSON 문서로 디코딩합니다.

매개변수형식설명
bytesListList바이트 값 리스트

반환: JSON 객체나 기본형 값.

var base64Str = "eyJoZWxsbyI6ICJ3b3JsZCJ9";
var bytesStr = atob(base64Str);
var bytes = stringToBytes(bytesStr);
decodeToJson(bytes); // {"hello": "world"}

문자열이 2진(base-2) 값인지 확인합니다.

매개변수형식설명
strString확인할 문자열

반환: int — 2진이면 2, 아니면 -1.

isBinary("1100110"); // 2
isBinary("2100110"); // -1

문자열이 8진(base-8) 값인지 확인합니다.

매개변수형식설명
strString확인할 문자열

반환: int — 8진이면 8, 아니면 -1.

isOctal("4567734"); // 8
isOctal("8100110"); // -1

문자열이 10진(base-10) 값인지 확인합니다.

매개변수형식설명
strString확인할 문자열

반환: int — 10진이면 10, 아니면 -1.

isDecimal("4567039"); // 10
isDecimal("C100110"); // -1

문자열이 16진(base-16) 값인지 확인합니다.

매개변수형식설명
strString확인할 문자열

반환: int — 16진이면 16, 아니면 -1.

isHexadecimal("F5D7039"); // 16
isHexadecimal("K100110"); // -1

double 값이 NaN(Not-a-Number)인지 확인합니다.

매개변수형식설명
valuedouble확인할 값

반환: boolean — NaN이면 true.

isNaN(0.0 / 0.0); // true
isNaN(1.0); // false

URI 문자열을 인코딩합니다. 다음 예약 문자는 그대로 둡니다: A–Z a–z 0–9 - _ . ! ~ * ' ( ) ; / ? : @ & = + $ , #

매개변수형식설명
uriString인코딩할 URI

반환: String — 인코딩된 URI.

var uri = "-_.!~*'();/?:@&=+$,#ht://example.ж д a/path with spaces/?param1=Київ 1&param2=Україна2";
encodeURI(uri);
// "-_.!~*'();/?:@&=+$,#ht://example.%D0%B6%20%D0%B4%20a/path%20with%20spaces/?param1=%D0%9A%D0%B8%D1%97%D0%B2%201&param2=%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D0%B02"

encodeURI로 인코딩한 URI를 디코딩합니다.

매개변수형식설명
uriString인코딩된 URI

반환: String — 디코딩된 URI.

var encoded = "-_.!~*'();/?:@&=+$,#ht://example.%D0%B6%20%D0%B4%20a/path%20with%20spaces/?param1=%D0%9A%D0%B8%D1%97%D0%B2%201&param2=%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D0%B02";
decodeURI(encoded);
// "-_.!~*'();/?:@&=+$,#ht://example.ж д a/path with spaces/?param1=Київ 1&param2=Україна2"

지정한 메시지로 RuntimeException을 던집니다.

매개변수형식설명
messageString예외 메시지
raiseError("frequency_weighting_type must be 0, 1 or 2.");
// throws RuntimeException: "frequency_weighting_type must be 0, 1 or 2."
var value = 4;
var message = "frequency_weighting_type must be 0, 1 or 2. A value of " + value + " is invalid.";
raiseError(message);
// throws RuntimeException with the composed message

부호 있는 바이트 리스트를 부호 없는 정수 표현으로 바꿉니다.

매개변수형식설명
byteArrayList부호 있는 바이트 값 리스트

반환: List — 부호 없는 바이트 값(0–255).

var list = hexToBytes("D8FF");
printUnsignedBytes(list); // [216, 255]
var list2 = hexToBytes("FFD8");
printUnsignedBytes(list2); // [255, 216]

목표 길이가 될 때까지 문자열 앞쪽을 채웁니다.

매개변수형식설명
strString채울 문자열
targetLengthint원하는 결과 길이
padStringchar채울 문자

반환: String — 채운 문자열. 문자열이 이미 목표 길이 이상이면 그대로 돌려줍니다.

padStart("010011", 8, '0'); // "00010011"
padStart("1001010011", 8, '0'); // "1001010011" (already >= 8)
padStart("1001010011", 16, '*'); // "******1001010011"
var fullNumber = "203439900FFCD5581";
var last6 = fullNumber.substring(11);
padStart(last6, fullNumber.length(), '*'); // "***********CD5581"

목표 길이가 될 때까지 문자열 뒤쪽을 채웁니다.

매개변수형식설명
strString채울 문자열
targetLengthint원하는 결과 길이
padStringchar채울 문자

반환: String — 채운 문자열. 문자열이 이미 목표 길이 이상이면 그대로 돌려줍니다.

padEnd("010011", 8, '0'); // "01001100"
padEnd("1001010011", 8, '0'); // "1001010011" (already >= 8)
padEnd("1001010011", 16, '*'); // "1001010011******"
var fullNumber = "203439900FFCD5581";
var first11 = fullNumber.substring(0, 11);
padEnd(first11, fullNumber.length(), '*'); // "203439900FF******"

정수를 16진수 문자열로 바꿉니다.

매개변수형식설명
iInteger바꿀 정수
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)
prefboolean선택 사항. 0x 접두사 포함(기본값: false)
lenint선택 사항. 포함할 바이트 수

반환: String — 16진수 문자열.

intToHex(0x7FFFFFFF, true, true); // "0x7FFFFFFF"
intToHex(171, true, false); // "AB"
intToHex(0xABCDEF, false, true, 4); // "0xCDAB"
intToHex(0xABCD, false, false, 2); // "AB"

long 값을 16진수 문자열로 바꿉니다.

매개변수형식설명
lLong바꿀 long 값
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)
prefboolean선택 사항. 0x 접두사 포함(기본값: false)
lenint선택 사항. 포함할 바이트 수

반환: String — 16진수 문자열.

longToHex(9223372036854775807, true, true); // "0x7FFFFFFFFFFFFFFF"
longToHex(0x7A12BCD3, true, true, 4); // "0xBCD3"
longToHex(0x7A12BCD3, false, false, 4); // "127A"

float 값을 IEEE 754 표현의 16진수 문자열로 바꿉니다.

매개변수형식설명
fFloat바꿀 float 값
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: String — 0x 접두사가 붙은 16진수 문자열.

floatToHex(123456789.00); // "0x4CEB79A3"
floatToHex(123456789.00, false); // "0xA379EB4C"

double 값을 IEEE 754 표현의 16진수 문자열로 바꿉니다.

매개변수형식설명
dDouble바꿀 double 값
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: String — 0x 접두사가 붙은 16진수 문자열.

doubleToHex(1729.1729d); // "0x409B04B10CB295EA"
doubleToHex(1729.1729d, false); // "0xEA95B20CB1049B40"

숫자를 지정한 진법(2진, 8진, 10진, 16진)의 문자열로 바꿉니다.

매개변수형식설명
numberLong바꿀 숫자
radixint선택 사항. 진법: 2, 8, 10, 16(기본값: 10)
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)
prefboolean선택 사항. 16진수에 0x 접두사 포함(기본값: false)

반환: String — 지정한 진법으로 나타낸 숫자.

intLongToRadixString(58, 2); // "00111010"
intLongToRadixString(9223372036854775807, 2); // "0111111111...1" (63 digits)
intLongToRadixString(13158, 8); // "31546"
intLongToRadixString(-13158, 8); // "1777777777777777746232"
intLongToRadixString(-13158, 10); // "-13158"
intLongToRadixString(13158, 16); // "3366"
intLongToRadixString(-13158, 16); // "FFCC9A"
intLongToRadixString(9223372036854775807, 16); // "7FFFFFFFFFFFFFFF"
intLongToRadixString(-13158, 16, true, true); // "0xFFCC9A"

16진수 문자열을 정수로 파싱합니다.

매개변수형식설명
hexString16진수 문자열
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: int — 파싱한 정수.

parseHexToInt("BBAA"); // 48042
parseHexToInt("BBAA", true); // 48042
parseHexToInt("AABB", false); // 48042
parseHexToInt("BBAA", false); // 43707

별칭:

  • parseLittleEndianHexToInt(hex) — parseHexToInt(hex, false)와 같습니다
  • parseBigEndianHexToInt(hex) — parseHexToInt(hex, true)와 같습니다

16진수 문자열을 float(IEEE 754)로 파싱합니다.

매개변수형식설명
hexString16진수 문자열
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: float — 파싱한 float 값.

parseHexToFloat("41EA62CC"); // 29.29824
parseHexToFloat("41EA62CC", true); // 29.29824
parseHexToFloat("41EA62CC", false); // -5.948442E7
parseHexToFloat("CC62EA41", false); // 29.29824

별칭:

  • parseLittleEndianHexToFloat(hex) — parseHexToFloat(hex, false)와 같습니다
  • parseBigEndianHexToFloat(hex) — parseHexToFloat(hex, true)와 같습니다

16진수 문자열을 일반 정수 값으로 해석해 float로 돌려줍니다. parseHexToFloat와 달리 IEEE 754 비트 해석을 쓰지 않습니다.

매개변수형식설명
hexString16진수 문자열(0x 접두사 포함 가능)
bigEndianboolean빅 엔디언 바이트 순서

반환: float — float로 나타낸 정수 값.

parseHexIntLongToFloat("0x0A", true); // 10.0
parseHexIntLongToFloat("0x0A", false); // 10.0
parseHexIntLongToFloat("0x00000A", true); // 10.0
parseHexIntLongToFloat("0x0A0000", false); // 10.0
parseHexIntLongToFloat("0x000A0A", true); // 2570.0
parseHexIntLongToFloat("0x0A0A00", false); // 2570.0

16진수 문자열을 double(IEEE 754)로 파싱합니다.

매개변수형식설명
hexString16진수 문자열
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: double — 파싱한 double 값.

parseHexToDouble("409B04B10CB295EA"); // 1729.1729
parseHexToDouble("409B04B10CB295EA", true); // 1729.1729
parseHexToDouble("409B04B10CB295EA", false); // -2.7208640774822924E205
parseHexToDouble("EA95B20CB1049B40", false); // 1729.1729

별칭:

  • parseLittleEndianHexToDouble(hex) — parseHexToDouble(hex, false)와 같습니다
  • parseBigEndianHexToDouble(hex) — parseHexToDouble(hex, true)와 같습니다

16진수 문자열을 바이트 값 리스트로 바꿉니다.

매개변수형식설명
hexString16진수 문자열

반환: List — 부호 있는 바이트 값 리스트(-128~127).

hexToBytes("D8FF"); // [-40, -1]

16진수 문자열을 바이트 배열로 바꿉니다.

매개변수형식설명
hexString16진수 문자열

반환: int[] — 바이트 배열.

바이트 리스트를 16진수 문자열로 바꿉니다.

매개변수형식설명
bytesListList바이트 값 리스트

반환: String — 16진수 문자열.

바이트 리스트를 정수로 파싱합니다.

매개변수형식설명
bytesListList바이트 값 리스트
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: int — 파싱한 정수.

parseBytesToInt([0xBB, 0xAA]); // 48042
parseBytesToInt([0xBB, 0xAA], true); // 48042
parseBytesToInt([0xAA, 0xBB], false); // 48042

바이트 리스트를 long 값으로 파싱합니다.

매개변수형식설명
bytesListList바이트 값 리스트
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: long — 파싱한 long 값.

바이트 리스트를 float(IEEE 754)로 파싱합니다.

매개변수형식설명
bytesListList바이트 값 리스트
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: float — 파싱한 float 값.

바이트 리스트를 정수로 해석해 float로 돌려줍니다.

매개변수형식설명
bytesListList바이트 값 리스트
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: float — float로 나타낸 정수 값.

바이트 리스트를 long 값으로 해석해 double로 돌려줍니다.

매개변수형식설명
bytesListList바이트 값 리스트
bigEndianboolean선택 사항. 빅 엔디언 바이트 순서(기본값: true)

반환: double — double로 나타낸 long 값.

바이트 리스트를 ExecutionArrayList(TBEL 내부 리스트 유형)로 바꿉니다.

매개변수형식설명
bytesListList바이트 값 리스트

반환: List — 실행 배열 리스트.

바이트 하나를 원소 8개짜리 2진 배열로 바꿉니다.

매개변수형식설명
bint바이트 값 하나

반환: int[] — 2진 숫자 8개(0 또는 1)의 배열.

parseByteToBinaryArray(0xFF); // [1, 1, 1, 1, 1, 1, 1, 1]
parseByteToBinaryArray(0x00); // [0, 0, 0, 0, 0, 0, 0, 0]

바이트 리스트를 2진 배열로 바꿉니다.

매개변수형식설명
bytesListList바이트 값 리스트

반환: int[] — 2진 배열(바이트당 8비트).

parseBytesToBinaryArray([0xFF, 0x00]);
// [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]

long 값을 원소 64개짜리 2진 배열로 바꿉니다.

매개변수형식설명
valuelonglong 값

반환: int[] — 2진 숫자 64개의 배열.

parseLongToBinaryArray(255L);
// [0,0,...,0, 1,1,1,1,1,1,1,1] (56 zeros followed by 8 ones)

2진 배열을 정수로 바꿉니다.

매개변수형식설명
binaryArrayint[]2진 숫자(0과 1) 배열

반환: int — 파싱한 정수.

parseBinaryArrayToInt([1, 1, 1, 1, 1, 1, 1, 1]); // 255
parseBinaryArrayToInt([0, 0, 1, 1, 1, 0, 1, 0]); // 58

문자열을 정수로 파싱합니다.

매개변수형식설명
strString파싱할 문자열

반환: int — 파싱한 정수.

parseInt("123"); // 123

문자열을 long 값으로 파싱합니다.

매개변수형식설명
strString파싱할 문자열

반환: long — 파싱한 long 값.

parseLong("9223372036854775807"); // 9223372036854775807

문자열을 float 값으로 파싱합니다.

매개변수형식설명
strString파싱할 문자열

반환: float — 파싱한 float 값.

parseFloat("3.14"); // 3.14

문자열을 double 값으로 파싱합니다.

매개변수형식설명
strString파싱할 문자열

반환: double — 파싱한 double 값.

parseDouble("3.141592653589793"); // 3.141592653589793

TBEL은 Java에서 물려받은 표준 비트 연산자를 지원합니다.

연산자설명예시
&AND0xFF & 0x0F → 0x0F
|OR0xF0 | 0x0F → 0xFF
^XOR0xFF ^ 0x0F → 0xF0
~NOT(보수)~0x00 → -1
<<왼쪽 시프트1 << 8 → 256
>>부호 있는 오른쪽 시프트-256 >> 4 → -16
>>>부호 없는 오른쪽 시프트-1 >>> 28 → 15
var a = 0xFF;
var b = 0x0F;
var andResult = a & b; // 15 (0x0F)
var orResult = a | b; // 255 (0xFF)
var xorResult = a ^ b; // 240 (0xF0)
var shifted = 1 << 8; // 256

Base64로 인코딩된 문자열을 16진수 문자열로 바꿉니다.

매개변수형식설명
base64StrStringBase64로 인코딩된 문자열

반환: String — 16진수 문자열.

base64ToHex("SGVsbG8gV29ybGQ="); // "48656C6C6F20576F726C64"

바이트 리스트를 Base64 문자열로 바꿉니다.

매개변수형식설명
bytesListList바이트 값 리스트

반환: String — Base64로 인코딩된 문자열.

bytesToBase64([72, 101, 108, 108, 111]); // "SGVsbG8="

Base64 문자열을 바이트 리스트로 바꿉니다.

매개변수형식설명
base64StrStringBase64로 인코딩된 문자열

반환: List — 바이트 값 리스트.

base64ToBytes("SGVsbG8gV29ybGQ=");
// [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]

base64ToBytes의 별칭입니다.

중첩된 JSON 구조를 한 단계 맵으로 평탄화합니다. 중첩된 키는 점으로 이어집니다.

오버로드 1 — 기본 평탄화:

var json = {"temperature": 42, "nested": {"humidity": 73}};
toFlatMap(json);
// {"temperature": 42, "nested.humidity": 73}

오버로드 2 — pathInKey 플래그 사용:

매개변수형식설명
jsonObjectJSON 객체나 문자열
pathInKeybooleantrue면 키에 전체 경로를 넣고, false면 마지막 키만 씁니다
var json = {"temperature": 42, "nested": {"humidity": 73}};
toFlatMap(json, true); // {"temperature": 42, "nested.humidity": 73}
toFlatMap(json, false); // {"temperature": 42, "humidity": 73}

오버로드 3 — 제외 목록 사용:

매개변수형식설명
jsonObjectJSON 객체나 문자열
excludeListList평탄화에서 제외할 경로
var json = {"temperature": 42, "nested": {"humidity": 73, "pressure": 1013}};
toFlatMap(json, ["pressure"]);
// {"temperature": 42, "nested.humidity": 73}

오버로드 4 — 제외 목록과 pathInKey 사용:

매개변수형식설명
jsonObjectJSON 객체나 문자열
excludeListList평탄화에서 제외할 경로
pathInKeybooleantrue면 키에 전체 경로를 넣습니다
var json = {"temperature": 42, "nested": {"humidity": 73, "pressure": 1013}};
toFlatMap(json, ["pressure"], true);
// {"temperature": 42, "nested.humidity": 73}

Date 클래스로 날짜·시간을 만들고 계산합니다.

var date1 = new Date("2024-01-15");
var date2 = new Date("15/01/2024", "dd/MM/yyyy");
var date3 = new Date("15/01/2024", "dd/MM/yyyy", "en_US");
var date4 = new Date("15/01/2024", "dd/MM/yyyy", "en_US", "UTC");
매개변수형식설명
dateStringString파싱할 날짜 문자열
patternString선택 사항. 날짜 형식 패턴(예: dd/MM/yyyy)
localeString선택 사항. 로캘(예: en_US, fr_FR)
timeZoneString선택 사항. 시간대(예: UTC, America/New_York)
var date1 = new Date(2024, 1, 15);
var date2 = new Date(2024, 1, 15, 14, 30, 45);
var date3 = new Date(2024, 1, 15, "UTC");
var date4 = new Date(2024, 1, 15, 14, 30, 45, "UTC");
var options = {
pattern: "yyyy-MM-dd HH:mm:ss",
locale: "en_US",
timeZone: "UTC"
};
var date = new Date("2024-01-15 14:30:45", options);

각 메서드는 날짜를 그 자리에서 바꾸고 바뀐 날짜를 돌려줍니다.

var date = new Date(2024, 1, 15);
date.addYears(1); // 2025-01-15
date.addMonths(2); // 2025-03-15
date.addWeeks(1); // 2025-03-22
date.addDays(5); // 2025-03-27
date.addHours(3); // 2025-03-27 03:00
date.addMinutes(30); // 2025-03-27 03:30
date.addSeconds(45); // 2025-03-27 03:30:45
date.addMilliseconds(500); // 2025-03-27 03:30:45.500

지리 좌표점이 다각형 경계 안에 있는지 확인합니다.

매개변수형식설명
latitudedouble점의 위도
longitudedouble점의 경도
polygonList다각형 꼭짓점을 정의하는 [latitude, longitude] 쌍의 리스트

반환: boolean — 점이 다각형 안에 있으면 true.

var polygon = [
[55.75, 37.61],
[55.75, 37.62],
[55.74, 37.62],
[55.74, 37.61]
];
isInsidePolygon(55.745, 37.615, polygon); // true

지리 좌표점이 원 안에 있는지 확인합니다.

매개변수형식설명
latitudedouble점의 위도
longitudedouble점의 경도
centerLatitudedouble원 중심의 위도
centerLongitudedouble원 중심의 경도
radiusInKmdouble원의 반지름(킬로미터)

반환: boolean — 점이 원 안에 있으면 true.

isInsideCircle(55.745, 37.615, 55.75, 37.62, 1.5); // true (within 1.5 km)