=LAMBDA(string,LET(ascii2bin,LAMBDA(a,CONCAT(BASE(CODE(MID(a, SEQUENCE(LEN(a)), 1)),2,8))),delimitedRows, LAMBDA(rowInterval,paddingInterval,paddingChar,rowLambda,string,LET(stringCharArray, MID(string,SEQUENCE(LEN(string)),1),qtyOfPadding, MOD(LEN(string),paddingInterval),paddingCharArray, IF(SEQUENCE(paddingInterval - qtyOfPadding), paddingChar),paddedStringCharArray, IF(qtyOfPadding=0, stringCharArray, VSTACK(paddingCharArray, stringCharArray)),BYROW(WRAPROWS(paddedStringCharArray, rowInterval, ""), rowLambda))),addDelimiterEveryXChar, LAMBDA(delimiterInterval,delimiterChar,paddingChar,string,TEXTJOIN(delimiterChar, TRUE, delimitedRows(delimiterInterval,delimiterInterval,paddingChar,LAMBDA(row, CONCAT(row)),string))),reflectString, LAMBDA(a,CONCAT(MID(a,SEQUENCE(LEN(a),,LEN(a),-1),1))),reflectStringByGroup, LAMBDA(delimiterInterval,paddingChar,string,TEXTJOIN("", TRUE, delimitedRows(delimiterInterval,delimiterInterval,paddingChar,LAMBDA(row, reflectString(CONCAT(row))),string))),nbit2dec, LAMBDA(a,SUM(MID( a, SEQUENCE(LEN(a)),1)*2^SEQUENCE(LEN(a),1,LEN(a)-1,-1))),formatHex, LAMBDA(a, MAP(a, LAMBDA(cell, DEC2HEX(nbit2dec(cell),4)))),crc,LAMBDA(messageBin,polyBin,reflectInput,reflectResult,LET(reflectCrcInput, LAMBDA(a, MAP(a, LAMBDA(cell, reflectStringByGroup(8,"0",cell)))),lenPoly, LEN(polyBin),reflectCrcResult, LAMBDA(a, MAP(a, LAMBDA(cell, reflectStringByGroup(lenPoly-1,"0",cell)))),messagePrepped, (CONCAT(IF(reflectInput,reflectCrcInput(messageBin),messageBin), SEQUENCE(lenPoly-1,,0,0))),polynomialDivision, REDUCE(LEFT(messagePrepped,lenPoly),SEQUENCE(LEN(messagePrepped)-lenPoly+1,,0),LAMBDA(a,i,CONCAT(IF((nbit2dec(a)>=POWER(2,lenPoly-1)),BASE(BITXOR(nbit2dec(a), nbit2dec(polyBin)),2), RIGHT(a,lenPoly-1)),MID(messagePrepped,lenPoly+1+i,1)))),IF(reflectResult,reflectCrcResult(polynomialDivision),polynomialDivision))),myCrc16Arc,LAMBDA(ascii, formatHex(crc(ascii2bin(ascii),"11000000000000101",TRUE,TRUE))),myCrc16Arc(string)))
Follow us on