BitVecFromInteger

Table of Contents

BitVecFromInteger

Description

Create bitvector from integer value. Creates a bitvector representing the specified number of bits from the integer.

Parameters

NameDirectionDescription
valueinInteger value to convert
bitsinNumber of bits to use (1-64)

Usage example (from documentation)

  BitVec flags = BitVecFromInteger(0xABCD, 16);  // Use 16 bits

Usage example (Cross-references)

    bit_len = 4; // Minimum 4 bits for hex display
    
    *bv = BitVecFromInteger(value, bit_len);
    StrDeinit(&hex_str);
    return i;
    bit_len = 3; // Minimum 3 bits for octal display
    
    *bv = BitVecFromInteger(value, bit_len);
    StrDeinit(&oct_str);
    return i;
    }
    
    BitVec BitVecFromInteger(u64 value, u64 bits) {
    BitVec result = BitVecInit();
    if (bits == 0) {
    
    // Test 3: Hex formatting
    BitVec bv2 = BitVecFromInteger(0xABCD, 16);
    StrWriteFmt(&output, "{x}", bv2);
    success = success && (ZstrCompare(output.data, "0xabcd") == 0);
    
    // Test 5: Octal formatting
    BitVec bv3 = BitVecFromInteger(0755, 10);
    StrWriteFmt(&output, "{o}", bv3);
    success = success && (ZstrCompare(output.data, "0o755") == 0);
    
    // Test 7: Zero value
    BitVec bv_zero = BitVecFromInteger(0, 1);
    StrWriteFmt(&output, "{x}", bv_zero);
    success = success && (ZstrCompare(output.data, "0x0") == 0);
    // Test BitVecFromInteger function
    bool test_bitvec_from_integer(void) {
    printf("Testing BitVecFromInteger\n");
    
    // Convert from integer
    // Convert from integer
    u64    value = 11; // 1011 in binary
    BitVec bv    = BitVecFromInteger(value, 4);
    
    // Check result
    
    // Test with zero
    BitVec zero_bv = BitVecFromInteger(0, 8);
    result         = result && (zero_bv.length == 8);
    
    // Test integer to bitvec with 0
    BitVec bv2 = BitVecFromInteger(0, 8);     // 8 bits for zero
    result     = result && (bv2.length == 8); // Should be 8 bits
    BitVecDeinit(&bv2);
    
    // Test large integer
    BitVec bv3 = BitVecFromInteger(UINT64_MAX, 64); // 64 bits for max value
    result     = result && (bv3.length == 64);
    BitVecDeinit(&bv3);
    value    &= mask;
    
    BitVec bv        = BitVecFromInteger(value, bits);
    u64    recovered = BitVecToInteger(&bv);
    
    // Test large integer conversion (should cap at 64 bits)
    BitVec large_bv = BitVecFromInteger(0xFFFFFFFFFFFFFFFF, 64);
    result          = result && (large_bv.length == 64);
    // Test cross-format validation
    BitVec bv1 = BitVecFromStr("11010110");
    BitVec bv2 = BitVecFromInteger(0xD6, 8); // Assuming MSB-first: 11010110 = 0xD6
    BitVec bv3 = BitVecFromBytes((u8[]) {0xD6}, 8);

Share :

Related Posts

BitVecFromBytes

BitVecFromBytes Description Create bitvector from byte array. Reads the specified number of bits from the byte array.

Read More

BitVecToBytes

BitVecToBytes Description Export bitvector to byte array. Copies the internal bit representation to the provided byte array.

Read More

BitVecCompare

BitVecCompare Description Compare two bitvectors lexicographically. Comparison is done bit by bit from left to right.

Read More