示例#1
0
文件: buffer.c 项目: birdming22/bdec
void appendBitBuffer(struct EncodedData* result, const BitBuffer* data)
{
    BitBuffer copy = *data;
    while (copy.num_bits >= sizeof(unsigned int) * 8)
    {
        encode_big_endian_integer(decode_integer(&copy, sizeof(unsigned int) * 8),
                sizeof(unsigned int) * 8, result);
    }
    if (copy.num_bits > 0)
    {
        encode_big_endian_integer(decode_integer(&copy, copy.num_bits),
                copy.num_bits, result);
    }
}
示例#2
0
void encode_little_endian_integer(unsigned int value, int num_bits, struct EncodedData* result)
{
    int i;
    for (i = 0; i < num_bits / 8; ++i)
    {
        encode_big_endian_integer(value & 0xFF, 8, result);
        value >>= 8;
    }
}
示例#3
0
void encode_long_big_endian_integer(unsigned long long value, int num_bits, struct EncodedData* result)
{
    if (num_bits > 32)
    {
        // Encode the highest four bytes
        num_bits -= 32;
        unsigned int upper = value >> num_bits;
        encode_big_endian_integer(upper, 32, result);
        value -= ((unsigned long long)upper) << num_bits;
    }
示例#4
0
文件: buffer.c 项目: birdming22/bdec
static void appendFloatBuffer(const unsigned char source[], int numBytes, enum Encoding encoding, struct EncodedData* output)
{
    if (encoding == getMachineEncoding())
    {
        int i;
        for (i = 0; i < numBytes; ++i)
        {
            encode_big_endian_integer(source[i], 8, output);
        }
    }
    else
    {
        int i;
        for (i = 0; i < numBytes; ++i)
        {
            encode_big_endian_integer(source[numBytes - 1 - i], 8, output);
        }
    }
}