如何反转 Mod 运算符
How do I reverse the Mod operator
我有一个使用 modulus 运算符
处理溢出的简单函数
Private Function RandomizeBlock(seed As Integer, ByVal block() As Byte) As Byte()
Dim Generator As System.Random = New System.Random(seed)
Dim newblock(255) As Byte
Dim i As Integer = 0
For i = 0 To block.Length - 1
newblock(i) = (block(i) + Generator.Next(0, 256)) Mod 256
Next
Return newblock
End Function
如何撤销对块进行的随机化?
我知道 mod 是这样工作的:
253,254,255,0,1,2,3,4
覆盖 0
。
我可以在这里找到 reverse
的倒数吗?
rndValue = Generator.Next(0, 256)
reverse_1 = ((256 - rndValue) + block(i)) Mod 256
reverse_2 = ((256 + rndValue) - block(i)) Mod 256
如果知道随机值,那么重构原始值就很简单了。
您只需要记住工作模数 p
,您没有实际数字,只有余数 class。通常用前p
个自然数作为这class个的代表。幸运的是,减法和加法与余数 classes.
完全兼容
VB 的 Mod
实现将任何正数转换为其余数 class 的代表。但是,它不能对负数执行此操作。你必须自己做。
长话短说,这是代码:
Dim reverse As Integer = block(i) - rndValue;
If reverse < 0 Then reverse = reverse + 256 'Convert to representative of remainder class
我有一个使用 modulus 运算符
处理溢出的简单函数 Private Function RandomizeBlock(seed As Integer, ByVal block() As Byte) As Byte()
Dim Generator As System.Random = New System.Random(seed)
Dim newblock(255) As Byte
Dim i As Integer = 0
For i = 0 To block.Length - 1
newblock(i) = (block(i) + Generator.Next(0, 256)) Mod 256
Next
Return newblock
End Function
如何撤销对块进行的随机化?
我知道 mod 是这样工作的:
253,254,255,0,1,2,3,4
覆盖 0
。
我可以在这里找到 reverse
的倒数吗?
rndValue = Generator.Next(0, 256)
reverse_1 = ((256 - rndValue) + block(i)) Mod 256
reverse_2 = ((256 + rndValue) - block(i)) Mod 256
如果知道随机值,那么重构原始值就很简单了。
您只需要记住工作模数 p
,您没有实际数字,只有余数 class。通常用前p
个自然数作为这class个的代表。幸运的是,减法和加法与余数 classes.
VB 的 Mod
实现将任何正数转换为其余数 class 的代表。但是,它不能对负数执行此操作。你必须自己做。
长话短说,这是代码:
Dim reverse As Integer = block(i) - rndValue;
If reverse < 0 Then reverse = reverse + 256 'Convert to representative of remainder class