如何将现有的字节数组值与C#中的另一个HEX值相加?

时间:2016-12-07 14:31:26

标签: c# python hex decode

我需要在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#中做到这一点?非常感谢你。

2 个答案:

答案 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;
}