You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

前端如何验证发送给API的Flag数值是否合法?

前端校验C# Flags枚举的有效Flag值

我需要把一个数值发送到API,想在前端做个软检查,确认它是不是有效的Flag值。我理解的有效Flag值是:二进制以1开头,后面跟0个或多个0的数字,或者直接是0。对应的C# Flags枚举如下:

[Flags]
public enum CarColors : ushort
{
    Other  = 0,
    Blue   = 1,
    Red    = 1 << 1,
    Black  = 1 << 2,
    Green  = 1 << 3,
    Orange = 1 << 4,
}

解决方案

  • 核心判断逻辑:有效Flag值要么是0,要么是2的整数次幂(二进制仅含单个1的非零整数)
  • 前端校验函数(以JavaScript为例):
function isValidFlagValue(value) {
    // 校验是否为ushort范围内的非负整数
    if (!Number.isInteger(value) || value < 0 || value > 65535) {
        return false;
    }
    // 0是合法值
    if (value === 0) {
        return true;
    }
    // 2的整数次幂满足:value & (value - 1) === 0
    return (value & (value - 1)) === 0;
}
  • 关键说明:
    • 必须校验数值在**ushort的范围(0~65535)**内,和后端枚举的类型匹配
    • 利用二进制位运算快速判断2的整数次幂,比循环或数学计算更高效

内容的提问来源于stack exchange,提问作者Randy Hall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:05:22