All pastes #482943 Raw Edit

Mine

public text v1 · immutable
·published 2007-05-11 14:10 UTC
rendered paste body
    utf32_t wtf32;
    wtf32.size = str.length;
    wtf32.data = (uint32_t *)malloc(sizeof(uint32_t) * str.length);
    int j = 0;
    for(unsigned int i = 0; i < wtf32.size; i++) {
        if((*(str.data + j)) >= 0x80) { /* multibyte character */
            if(((*(str.data + j) & 0xFFFF ) & 0xF0) == 0xF0) { /* 4-tavuiset */
                *(wtf32.data + i) = ((*(str.data + j) & 0x7) << 18);
                *(wtf32.data + i) |= ((*(str.data + ++j) & 0x3F) << 12);
                *(wtf32.data + i) |= ((*(str.data + ++j) & 0x3F) << 6);
                *(wtf32.data + i) |= ((*(str.data + ++j) & 0x3F));
            } else if(((*(str.data + j) & 0xFFFF) & 0xE0) == 0xE0) { /* 3-tavuiset */
                *(wtf32.data + i) = ((*(str.data + j) & 0xF) << 12);
                *(wtf32.data + i) |= ((*(str.data + ++j) & 0x3F) << 6);
                *(wtf32.data + i) |= ((*(str.data + ++j) & 0x3F));
            } else if(((*(str.data + j) & 0xFFFF) & 0xC0) == 0xC0) { /* 2-tavuiset */
                *(wtf32.data + i) = ((*(str.data + j) & 0x1F) << 6);
                *(wtf32.data + i) |= ((*(str.data + ++j) & 0x3F));
            }
        } else {
            *(wtf32.data + i) = (*(str.data + j));
        }
        j++;
    }
    return wtf32;