def BVV(value, size=None, **kwargs):
if type(value) in (bytes, str):<EOL><INDENT>if type(value) is str:<EOL><INDENT>l.warning("<STR_LIT>")<EOL>value = value.encode('<STR_LIT:utf-8>')<EOL><DEDENT>if size is None:<EOL><INDENT>size = len(value)*<NUM_LIT:8><EOL><DEDENT>elif type(size) is not int:<EOL><INDENT>raise TypeError("<STR_LIT>")<EOL><DEDENT>elif size != len(value)*<NUM_LIT:8>:<EOL><INDENT>raise ClaripyValueError('<STR_LIT>')<EOL><DEDENT>value = int(binascii.hexlify(value), <NUM_LIT:16>) if value != b"<STR_LIT>" else <NUM_LIT:0><EOL><DEDENT>elif size is None or (type(value) is not int and value is not None):<EOL><INDENT>raise TypeError('<STR_LIT>')<EOL><DEDENT>if value is not None:<EOL><INDENT>value &= (<NUM_LIT:1> << size) -<NUM_LIT:1><EOL><DEDENT>if not kwargs:<EOL><INDENT>try: return _bvv_cache[(value, size)]<EOL>except KeyError: pass<EOL><DEDENT>result = BV('<STR_LIT>', (value, size), length=size, **kwargs)<EOL>_bvv_cache[(value, size)] = result<EOL>return result<EOL>
Creates a bit-vector value (i.e., a concrete value).

:param value:   The value. Either an integer or a string. If it's a string, it will be interpreted as the bytes of
                a big-endian constant.
:param size:    The size (in bits) of the bit-vector. Optional if you provide a string, required for an integer.

:returns:       A BV object representing this value.