Variant f_base_convert(CStrRef number, int64_t frombase, int64_t tobase) { if (!string_validate_base(frombase)) { throw_invalid_argument("Invalid frombase: %d", frombase); return false; } if (!string_validate_base(tobase)) { throw_invalid_argument("Invalid tobase: %d", tobase); return false; } Variant v = string_base_to_numeric(number.data(), number.size(), frombase); return String(string_numeric_to_base(v, tobase), AttachString); }
Variant HHVM_FUNCTION(base_convert, const Variant& number, int64_t frombase, int64_t tobase) { if (!string_validate_base(frombase)) { throw_invalid_argument("Invalid frombase: %" PRId64, frombase); return false; } if (!string_validate_base(tobase)) { throw_invalid_argument("Invalid tobase: %" PRId64, tobase); return false; } String str = number.toString(); Variant v = string_base_to_numeric(str.data(), str.size(), frombase); return string_numeric_to_base(v, tobase); }
Variant HHVM_FUNCTION(octdec, const Variant& octal_string) { String str = octal_string.toString(); return string_base_to_numeric(str.data(), str.size(), 8); }
Variant HHVM_FUNCTION(hexdec, const Variant& hex_string) { String str = hex_string.toString(); return string_base_to_numeric(str.data(), str.size(), 16); }
Variant HHVM_FUNCTION(bindec, const Variant& binary_string) { String str = binary_string.toString(); return string_base_to_numeric(str.data(), str.size(), 2); }
Variant f_octdec(CStrRef octal_string) { return string_base_to_numeric(octal_string.data(), octal_string.size(), 8); }
Variant f_hexdec(CStrRef hex_string) { return string_base_to_numeric(hex_string.data(), hex_string.size(), 16); }
Variant f_bindec(CStrRef binary_string) { return string_base_to_numeric(binary_string.data(), binary_string.size(), 2); }