TheAlgorithms/C-Sharp · error · InvalidOperationException

Value is too big to fit into Int32

Error message

Value is too big to fit into Int32

What it means

BitArray.ToInt32() converts the bit field to a 32-bit integer. Because an int holds at most 32 bits, the method validates field.Length <= 32 first; wider BitArrays cannot be represented as Int32 and it throws InvalidOperationException. Note that GetHashCode() calls ToInt32(), so hashing a >32-bit BitArray also triggers this error.

Solutions

  1. Only call ToInt32() when field.Length <= 32; verify length before converting.
  2. For 33–64 bit fields use ToInt64() instead.
  3. Split wider BitArrays into <=32-bit chunks and convert each.
  4. Avoid using >32-bit BitArrays as hash keys, or override GetHashCode with a length-tolerant hash.

Example fix

// before
var ba = new BitArray(new string('1', 40));
int v = ba.ToInt32(); // throws

// after
var ba = new BitArray(new string('1', 40));
long v = ba.ToInt64(); // fits within 64 bits
Defensive patterns

Strategy: validation

Validate before calling

if (ba.field.Length > 32) throw new NotSupportedException("BitArray too wide for Int32");

Type guard

bool CanConvertToInt32(BitArray ba) => ba.ToString().Length <= 32;

Try / catch

try { hash = ba.GetHashCode(); } catch (InvalidOperationException ex) when (ex.Message.Contains("Int32")) { hash = ba.ToString().GetHashCode(); }

Prevention

When it happens

Trigger: Calling ToInt32() on a BitArray with field.Length > 32, or using a >32-bit BitArray as a dictionary/HashSet key (GetHashCode -> ToInt32 throws).

Common situations: Using large BitArrays (33–64 bits or more) in hashed collections; assuming symmetry with ToInt64's 64-bit limit when the field is between 33 and 64 bits.

Understand the failure class

Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.

Related errors


AI-assisted analysis of TheAlgorithms/C-Sharp@96e2905cab (2026-09-13). Data as JSON: /api/errors/0018f0e9dc8eabf2. Report an issue: GitHub.

Appendix: source

Thrown at DataStructures/BitArray.cs:697

        {
            throw new InvalidOperationException("Value is too big to fit into Int64");
        }

        var sequence = ToString();
        return Convert.ToInt64(sequence, 2);
    }

    /// <summary>
    ///     Returns a long integer representation of the bit-array.
    ///     Assumes the bit-array length must been smaller or equal to 32 bit.
    /// </summary>
    /// <returns>integer array.</returns>
    public int ToInt32()
    {
        // Precondition
        if (field.Length > 32)
        {
            throw new InvalidOperationException("Value is too big to fit into Int32");
        }

        var sequence = ToString();
        return Convert.ToInt32(sequence, 2);
    }

    /// <summary>
    ///     Sets all bits on false.
    /// </summary>
    public void ResetField()
    {
        for (var i = 0; i < field.Length; i++)
        {
            field[i] = false;
        }
    }

    /// <summary>

View on GitHub (pinned to 96e2905cab)