【问题标题】:C# Converting a String to BytesC# 将字符串转换为字节
【发布时间】:2014-11-03 09:00:59
【问题描述】:

我有一个使用加密文本字符串的程序,我基本上只是想编写一个简单的程序,它将为我打印出所有解密的文本。

例如:假设字母“A”=字节“2C”;我想在程序中输入字母 A 并让它为我打印出“2C”。

有没有人知道一个简单的方法来做到这一点?

非常感谢!

【问题讨论】:

  • 注意,任何由“A”=“2C”之类的映射字母组成的“加密”都是可怕的加密。
  • 可能需要自己做功课:)
  • 我同意,遗憾的是我没有自己创建加密。
  • 您可以使用Dictionary<char, byte> 将一个映射到另一个(假设没有一个简单的函数可以工作),但请注意您没有足够的空间来解释所有可能的 Unicode 字符。考虑将字符串编码为 UTF-8,然后对生成的字节数组执行加密。
  • @cdhowie 建议只创建一个字典,这是一个非常好的解决方案,只要您处理的字符集相当少(例如 ASCII)。

标签: c# string int byte


【解决方案1】:

2C 我想你的意思是字母 A 的十六进制表示?

类似于String.Format("{0:X}", Convert.ToInt32('A'));

OP 澄清后更新

您需要像这样预定义整个受支持的字符集。

    static Dictionary<char, int> cyper = new Dictionary<char, int>
{
{'A', 44},
{'B', 45},
{'C', 46},
{'D', 47},
{'E', 48},
{'F', 49},
// .. etc
};

// ...

        Console.WriteLine(string.Format("{0:X}", cyper['A'])); // will print 2C

但如果所有内容都相差几个值,这似乎不是一个很好的加密。

另一种方法是应用编码方案。对输入的运行时数学评估,将评估为 2C(加密)并能够获取 2C 并评估为 A(解密)。

【讨论】:

  • 这正是我的意思,是的。谢谢。
  • 啊是的好电话,忘了一步,你得先把它转换成底层的int。
  • 现在是格式异常。试试这个:String.Format("{0:X}", (int)'A');
  • 您纠正了主要问题,但您仍然遇到与其他答案相同的问题。 ASCII / Unicode A 的十六进制值是 41,而不是 2C
  • @user3809661 我会修改我的答案
【解决方案2】:

我建议你这样尝试:

byte[] b = System.Text.Encoding.UTF8.GetBytes (yourString);

【讨论】:

  • 使用这种方法,"A"[0x41]。如果 OP 需要不同的映射,例如"A"[0x2C],这行不通。
  • @p.s.w.g:- 嗯..有道理。但我认为这是当您想要将字符串 convert 字符串转换为字节时进行的正确方法,否则它只是像String.Format("{0:X}", (int)'A'); 这样的格式更改,而不是真正意义上的转换。难倒:(
  • 如果是 UNICODE,则从结果中减去 41(我认为)以获得基于数字的索引 (1 - 52)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-10
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
  • 2022-01-18
相关资源
最近更新 更多