我需要在C#中解码一个字符串。算法在HEX值中生成。所以在C#中,我认为我需要转换为字节数组?我是对的吗?所以我用字符串做了一个字节数组:
string Encoded = "ENCODEDSTRINGSOMETHING";
byte[] ba = Encoding.Default.GetBytes (Encoded);
现在我需要首先修改字节数组中的每个字节,从求和十六进制值(0x20)开始到第一个字节,对于数组i中的每个下一个字节,应该从0x20十六进制值开始替换0x01十六进制,并将其与后面的字节相加我的阵列。然后我需要再次将我的字节数组结果转换为字符串并打印。在Python中,这很容易:
def decode ():
strEncoded = "ENCODEDSTRINGSOMETHING"
strDecoded = ""
counter = 0x20
for ch in strEncoded:
ch_mod = ord(ch) + counter
counter -= 1
strDecoded += chr(ch_mod)
print ("%s" % strDecoded)
if __name__ == '__main__':
decode()
我怎样才能在C#中做到这一点?非常感谢你。
答案 0 :(得分:1)
以下是如何做你想做的事情的大致轮廓。可能需要稍微更改一下以适合您的问题/解决方案。
public string Encode(string input, int initialOffset = 0x20)
{
string result = "";
foreach(var c in input)
{
result += (char)(c + (initialOffset --));
}
return result;
}
答案 1 :(得分:0)
试试这段代码:
string Encoded = "ENCODEDSTRINGSOMETHING";
byte[] ba = Encoding.Default.GetBytes(Encoded);
string strDecoded = "";
int counter = 0x20;
foreach (char c in Encoded)
{
int ch_mod = (int)c+counter;
counter -= 1;
strDecoded += (char)ch_mod;
}