VB.NET 实现 JS 的 EVAL()。
JS 中有一个EVAL ()
当我输入 (((((((((((0x0fffffff|108)&108)^103)|110)|104)&109)&105)^102)|106)|101)) 的时候
会得到 111
请问VB.NET 中怎么能实现(肯定能实现)
自己也不知道是什么动态执行还是什么.就觉得貌似是计算了
(((((((((((0x0fffffff|108)&108)^103)|110)|104)&109)&105)^102)|106)|101)) 表达式.
当我输入 (((((((((((0x0fffffff|108)&108)^103)|110)|104)&109)&105)^102)|106)|101)) 的时候
会得到 111
请问VB.NET 中怎么能实现(肯定能实现)
自己也不知道是什么动态执行还是什么.就觉得貌似是计算了
(((((((((((0x0fffffff|108)&108)^103)|110)|104)&109)&105)^102)|106)|101)) 表达式.
...全文
请发表友善的回复…
发表回复
「已注销」 2008-07-10
- 打赏
- 举报
很满意.结贴.
HimeTale 2008-07-09
- 打赏
- 举报
其中
是为了转成(((((((((&HFFFFFFF Or 108) And 108) Xor 103) Or 110) Or 104) And 109) And 105) Xor 102) Or 106) Or 101这种vb下的写法
str = str.Replace("|", " or ").Replace("&", " and ").Replace("^", " xor ").Replace("0x", "&H")
是为了转成(((((((((&HFFFFFFF Or 108) And 108) Xor 103) Or 110) Or 104) And 109) And 105) Xor 102) Or 106) Or 101这种vb下的写法
HimeTale 2008-07-09
- 打赏
- 举报
以下代码测试通过:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim str As String = "(((((((((((0x0fffffff|108)&108)^103)|110)|104)&109)&105)^102)|106)|101))"
str = str.Replace("|", " or ").Replace("&", " and ").Replace("^", " xor ").Replace("0x", "&H")
i = Calculate(str).ToString()
End Sub
Function Calculate(ByVal expression As String) As Object
Dim className As String = "clsF"
Dim methodName As String = "funCal"
Dim classSource As New System.Text.StringBuilder
classSource.Append("public class " + className + vbCrLf)
classSource.Append(" public function " + methodName + "() as object" + vbCrLf)
classSource.Append(" return " + expression + vbCrLf)
classSource.Append(" end function" + vbCrLf)
classSource.Append("end class")
Dim codeProvider As New VBCodeProvider
Dim cParams As New CodeDom.Compiler.CompilerParameters
cParams.GenerateExecutable = False
cParams.GenerateInMemory = False
Dim cResults As CodeDom.Compiler.CompilerResults = codeProvider.CompileAssemblyFromSource(cParams, classSource.ToString)
Dim asm As System.Reflection.Assembly = cResults.CompiledAssembly
Dim eval As Object = asm.CreateInstance(className)
Dim method As System.Reflection.MethodInfo = eval.GetType().GetMethod(methodName)
Dim args() As String = Nothing
Dim reObj As Object = method.Invoke(eval, args)
GC.Collect()
Return reObj
End Function