我想在VB.NET中模拟字节溢出。 下面的代码实现了正确的结果,但我怀疑这不是最有效的方法。是否有更简单/更好的方法来实现这一目标?
Dim src As Byte = 232
Dim key As Byte = 231
Dim encoded As Byte = 0
Dim decoded As Byte = 0
' Encode
encoded = CByte((CInt(src) + CInt(key)) Mod 256I)
' Decode
Dim tmp As Int32 = CInt(encoded) - CInt(key)
decoded = CByte(IIf(tmp < 0, 256I + tmp, tmp))
' encoded = 207
' decoded = src = correct
答案 0 :(得分:2)
是的,你可以加快速度。但是,它需要更改项目构建选项。在解决方案中添加新项目。右键单击它,“属性”,“构建”选项卡,向下滚动,单击“高级编译选项”按钮。勾选&#34;删除整数溢出检查&#34;选项。
现在你可以这样写:
Dim src As Byte = 232
Dim key As Byte = 231
Dim encoded As Byte = src + key
Dim decoded As Byte = encoded - key
您在新项目中公开的公共方法中所做的事情。
要注意凯撒密码的可疑效用,它太容易破解了。 System.Cryptography命名空间有更好的替代方案,并不要求你修改具有棘手副作用的全局构建选项。