如何判断一段字符串是二进制?十进制?十六进制?

如何判断一段字符串是二进制?十进制?十六进制?

阅读 14.8k
4 个回答

一个简单粗暴的解决方案: 因为二进制、十进制、十六进制可用字符数依次增多,所以依次按照二进制、十进制、十六进制解析字符串即可,哪个先成功了就认为是哪一种。

比如

try {
    parseToBinary(str)
} catch {
    try {
        parseToDecimalism(str)
    } catch {
        parseToHexadecimal(str)
    }
}

大致这么个算法意思

0开头八进制
0x开头十六进制
其它十进制
转换的时候还是要进行错误控制,毕竟你是不能信任对方传过来的是否符合数制的要求

这可就不好判断了,不知道如此需求是有何用处?
例如字符串110,你可以说它是十进制,也可以说是二进制,除非字符串中带有特殊表示,例如十六进制后面跟一个H,十进制跟一个D,八进制跟一个O,二进制跟一个B如果字符串中有这些字符串来表示的话,到时可以使用正则之类的进行判断

js里主要看前缀,比如0o或者0O就是八进制的,0x或者0X是十六进制的,而0b0B就是二进制的。如果不给前缀,那就有点耍流氓了……
看标签里还有c和oc,这两门不太清楚~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题