Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
    }
}