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

How to sum existing byte array value with another HEX value in C#?

我需要用 C# 解码一个字符串。以十六进制值执行的算法。所以在 C# 中,我认为我需要转换为字节数组?对吗?所以我从一个字符串中做了一个字节数组:

string Encoded = "ENCODEDSTRINGSOMETHING";
            byte[] ba = Encoding.Default.GetBytes (Encoded);

现在我需要修改字节数组中的每个字节,首先从将十六进制值 (0x20) 加到第一个字节开始,对于数组中的每个下一个字节,我应该从起始的 0x20 十六进制值替换为 0x01 十六进制,并将其与以下内容相加我的 ba 数组中的字节。然后我需要再次将我的字节数组结果转换为字符串并打印。在 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# 中实现?非常感谢。

这里是关于如何做你想做的事情的粗略概述。可能需要稍微更改一下以适合您的 problem/solution.

public string Encode(string input, int initialOffset = 0x20)
{
     string result = "";
     foreach(var c in input)
     {
          result += (char)(c + (initialOffset --));
     }
     return result;
}

试试这个代码:

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