int main(int argc, char *argv[]) { int bytesLen1 = 0; char *bytes1 = hexStrToBytes(sInputStr1, &bytesLen1); if (!bytes1) { printf("Failure! Couldn't convert hex to bytes for first input.\n"); return 1; } int bytesLen2 = 0; char *bytes2 = hexStrToBytes(sInputStr2, &bytesLen2); if (!bytes2) { printf("Failure! Couldn't convert hex to bytes for second input.\n"); return 1; } char *xorResultStr = malloc(bytesLen1); if (!xorResultStr) { printf("Failure! Couldn't alloc buffer for xor result string.\n"); return 1; } if (bytesLen1 != bytesLen2) { printf("Failure! The lengths of both inputs are different.\n"); return 1; } xorBytes(bytes1, bytes2, xorResultStr, bytesLen1); char *aHexStr = malloc(bytesLen1 * 2); if (!aHexStr) { printf("Failure! Couldn't alloc buffer for hex string.\n"); return 1; } bytesToHexStr(xorResultStr, aHexStr, bytesLen1); if (strcmp(aHexStr, sOutputStr) == 0) { printf("Success!\n"); } else { printf("Failure!\n"); } free(xorResultStr); free(aHexStr); return 0; }
void dxfToStr(const resbuf* rb, CString& dxfCodeStr, CString& valueStr) { int dataType = dxfCodeToDataType(rb->restype); dxfCodeStr.Format(_T("%d"), rb->restype); CString tmpStr; switch (dataType) { case RTSHORT: valueStr.Format(_T("%d"), rb->resval.rint); break; case RTLONG: valueStr.Format(_T("%ld"), rb->resval.rlong); break; case RTREAL: valueStr.Format(_T("%g"), rb->resval.rreal); break; case RTSTR: if (rb->resval.rstring == NULL) valueStr = _T("(NULL)"); else valueStr.Format(_T("\"%s\""), rb->resval.rstring); break; case RT3DPOINT: valueStr.Format(_T("(%g, %g, %g)"), rb->resval.rpoint[X], rb->resval.rpoint[Y], rb->resval.rpoint[Z]); break; case RTPOINT: valueStr.Format(_T("(%g, %g)"), rb->resval.rpoint[X], rb->resval.rpoint[Y]); break; case 1004: valueStr.Format(_T("Binary Chunk: \"%s\""), bytesToHexStr(rb->resval.rbinary.buf, rb->resval.rbinary.clen, tmpStr)); break; case -6: valueStr = _T("Extension Dictionary"); break; case -5: valueStr = _T("Persistent Reactors"); break; case -4: valueStr.Format(_T("Conditional Operator: \"%s\""), rb->resval.rstring); break; case -3: valueStr = _T("Start of Xdata"); break; case -2: valueStr.Format(_T("<Entity Name Reference: %8lx>"), rb->resval.rlname[0]); break; case -1: case RTENAME: if ((rb->restype >= 330 )&& (rb->restype < 340)) valueStr.Format(_T("<Soft Pointer: %8lx>"), rb->resval.rlname[0]); else if((rb->restype >= 340) && (rb->restype < 350)) valueStr.Format(_T("<Hard Pointer: %8lx>"), rb->resval.rlname[0]); else if((rb->restype >= 350) && (rb->restype < 360)) valueStr.Format(_T("<Soft Ownership: %8lx>"), rb->resval.rlname[0]); else if((rb->restype >= 360) && (rb->restype < 370)) valueStr.Format(_T("<Hard Ownership: %8lx>"), rb->resval.rlname[0]); else if((rb->restype >= 390) && (rb->restype < 399)) valueStr.Format(_T("<Hard Pointer: %8lx>"), rb->resval.rlname[0]); else valueStr.Format(_T("<Entity Name: %8lx>"), rb->resval.rlname[0]); break; case RTPICKS: valueStr.Format(_T("<Selection Set: %8lx>"), rb->resval.rlname[0]); break; case RTLB: valueStr = _T("List Begin"); break; case RTLE: valueStr = _T("List End"); break; case RTNIL: valueStr = _T("NIL"); break; case RTT: valueStr = _T("T"); break; default: valueStr = _T("*Unknown*"); break; } }