如何将现有字节数组值与 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;
}
我需要用 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;
}