s我现在在使用此功能时遇到了一些麻烦。我设法将其从某些汇编代码中撤消,并且使其能够正常工作。但是我不能做相反的事情。这是我的意思:

这是我的代码

ushort storedVal = 12525; //Value to extract actual index out of
byte[] block = BitConverter.GetBytes(storedVal);
uint aVal = block[0];
uint bVal = block[1];
uint index = Convert.ToUInt32((aVal >> 2) & 0x300) | bVal; //Extracting actual index


如您所见,它将执行一个Bitshift(向右移2),然后对该位移的结果进行“与”运算,然后将其结果与bVal(或12525字节数组中的第二个字节)进行“或”运算。

存储在索引中的结果是表/列表的索引。在这种情况下为48 /

我在将该索引重新变成这样的数字时遇到了麻烦。基本上撤销该代码的作用。

最佳答案

索引中没有足够的信息来恢复到原始值。要在此执行相反的操作,您需要知道用于存储索引的aValbVal,它们没有被存储。不知道这些,反向函数有无限的答案。

10-08 11:27