我正在尝试转换String to ASCII
代码,因此我使用此功能:
public List<string> PrimaryCode(string OrginalStr)
{
List<string> lstResult = new List<string>();
int lenOrginal = OrginalStr.Length;
string subOrginalStr;
byte[] AsciisubOrginalStr;
int AC;
for (int i = 0; i < lenOrginal; i++)
{
subOrginalStr = OrginalStr.Substring(i, 1);
AsciisubOrginalStr = Encoding.ASCII.GetBytes(subOrginalStr);
if (AsciisubOrginalStr[0] > 100)
{
AC = Convert.ToInt32(AsciisubOrginalStr[0]);
lstResult.Add((AC ).ToString());
}
else
{
AC = Convert.ToInt32(AsciisubOrginalStr[0]);
lstResult.Add((AC).ToString());
}
}
return lstResult;
}
我的项目的另一部分我需要将ASCII
代码转换为原始文本,因为您可以看到我使用此功能:
public List<string> PrimaryCodeRev(List<string> CodedStr)
{
string res = "";
foreach (string s in CodedStr)
{
res = res+s;
}
List<string> lstResult = new List<string>();
int lenOrginal = res.Length;
string subOrginalStr;
byte[] AsciisubOrginalStr;
int AC;
for (int i = 0; i < lenOrginal; i++)
{
subOrginalStr = res.Substring(i, 1);
AsciisubOrginalStr = Encoding.ASCII.GetBytes(subOrginalStr);
if (AsciisubOrginalStr[0] < 100)
{
AC = Convert.ToInt32(AsciisubOrginalStr[0]);
lstResult.Add((AC).ToString());
}
else
{
AC = Convert.ToInt32(AsciisubOrginalStr[0]);
lstResult.Add((AC).ToString());
}
}
return lstResult;
}
字符串输入hello
转换为ascii结果:
将ascii转换为正文:
但它不起作用,也不会返回正文。为什么?
答案 0 :(得分:1)
你好像太复杂了......
如果您的输入字符串只包含ASCII字符(必须是必填字符),那么您可以按如下方式对其进行编码:
public static IEnumerable<string> ToDecimalAscii(string input)
{
return input.Select(c => ((int)c).ToString());
}
您可以将其转换回类似字符串:
public static string FromDecimalAscii(IEnumerable<string> input)
{
return new string(input.Select(s => (char)int.Parse(s)).ToArray());
}
将它组合成一个可编辑的控制台程序:
using System;
using System.Collections.Generic;
using System.Linq;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
string original = "hello";
var encoded = ToDecimalAscii(original);
Console.WriteLine("Encoded:");
Console.WriteLine(string.Join("\n", encoded));
Console.WriteLine("\nDecoded: " + FromDecimalAscii(encoded));
}
public static IEnumerable<string> ToDecimalAscii(string input)
{
return input.Select(c => ((int)c).ToString());
}
public static string FromDecimalAscii(IEnumerable<string> input)
{
return new string(input.Select(s => (char)int.Parse(s)).ToArray());
}
}
}
让我重申一下:如果您的输入字符串只保证包含ASCII集中的字符,那么这只会起作用。
这并没有真正回答你为什么要这样做的问题。如果您正在尝试对某些内容进行编码,则可能最好使用某种加密方法,该方法输出一个字节数组,并将该数组转换为基数为64。
答案 1 :(得分:-2)
获取Ascii代码只需执行以下操作。
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
对于来自AScii代码的字符串,
char c1 = (char) asciiCode;