【发布时间】:2016-11-12 14:04:58
【问题描述】:
假设我们有以下签名
void doSomething(string s)
当用户调用函数时,可以调用
doSomething("hello") 或 doSomething("\x15\x3C\xFF")
有没有办法判断参数何时是第二种形式,十六进制值?
我想做类似的事情
if(isHex(s))
// do this
else
// do that
【问题讨论】:
-
我认为使用正则表达式会有所帮助;)。
-
如果你想接受一个十六进制值,为什么不提供一个采用数字类型的重载呢?
-
第二个字符串在源代码级别仅是十六进制,内容是您从这些值中获得的任何字符。你可以像“\x68\x65\x6C\x6C\x6F”这样写“你好”,这是完全无法区分的。因此,它不是链接问题的副本。真正的答案是“不,没有办法区分它们”,你必须想出别的办法。
-
@harold 你是对的。我尝试了那些以前的“重复”解决方案,但它们不起作用。该程序将原始十六进制视为“6\u0093h-E”(不完全是这种形式)。 IE。一切都是程序的字符串,所以它无法区分原始是否是十六进制。
标签: c#