`如何在 C# 中将 ASCII 数组转换为文本?
`How to Converting a ASCII array to text in c#?
我收到一封来自网络的电报,它是一个字节数组,例如:
[0] 0x34
[1] 0x35
[2] 0x35
[3] 0x37
0x34 是 char 4 的十六进制值,0x35 是 ASCII 中 char 5 的十六进制值 table 依此类推
我可以使用
将其转换为字符串
string s = ASCIIEncoding.UTF8.GetString(Tel, 0, Tel.Length);
结果是
4557
现在我必须将其转换为 0x45 和 0x57,因为 0x45 是字符 'E' 的值,而 0x57 是 'W'
有没有办法在C#中将4557转换成字符串EW?我知道这是一个有点奇怪的协议,但我不知道如何将收到的电报转换为上面数组中的 'EW' vom。
为了发送我可以使用的东西
ToCharArray()
但是我不知道如何转换收到的电报
希望你能理解我的问题
这里是扩展方法
public static IEnumerable<byte> HexToByte(this string s, int partLength)
{
if (s == null)
throw new ArgumentNullException("s");
if (partLength <= 0)
throw new ArgumentException("Part length has to be positive.", "partLength");
for (var i = 0; i < s.Length; i += partLength)
yield return Convert.ToByte(s.Substring(i, Math.Min(partLength, s.Length - i)), 16);
}
下面的命令使用扩展方法将字符串转换为字节并打印为 char
input.HexToByte(2).ToList().ForEach(x => Console.WriteLine((char)x));
如何在一个循环中完成所有操作,这样您就不必转换字符串表示形式。这不包含错误处理...
var bytes = new byte[] { 0x34, 0x35, 0x35, 0x37 };
var output = new StringBuilder();
for (int i = 0; i < bytes.Length; i += 2)
{
output.Append(Char.ConvertFromUtf32(
Convert.ToInt32(
ASCIIEncoding.UTF8.GetString(
new byte[] { bytes[i], bytes[i + 1] }, 0, 2), 16)));
}
输出="EW"
我收到一封来自网络的电报,它是一个字节数组,例如:
[0] 0x34
[1] 0x35
[2] 0x35
[3] 0x37
0x34 是 char 4 的十六进制值,0x35 是 ASCII 中 char 5 的十六进制值 table 依此类推
我可以使用
将其转换为字符串 string s = ASCIIEncoding.UTF8.GetString(Tel, 0, Tel.Length);
结果是
4557
现在我必须将其转换为 0x45 和 0x57,因为 0x45 是字符 'E' 的值,而 0x57 是 'W'
有没有办法在C#中将4557转换成字符串EW?我知道这是一个有点奇怪的协议,但我不知道如何将收到的电报转换为上面数组中的 'EW' vom。
为了发送我可以使用的东西
ToCharArray()
但是我不知道如何转换收到的电报
希望你能理解我的问题
这里是扩展方法
public static IEnumerable<byte> HexToByte(this string s, int partLength)
{
if (s == null)
throw new ArgumentNullException("s");
if (partLength <= 0)
throw new ArgumentException("Part length has to be positive.", "partLength");
for (var i = 0; i < s.Length; i += partLength)
yield return Convert.ToByte(s.Substring(i, Math.Min(partLength, s.Length - i)), 16);
}
下面的命令使用扩展方法将字符串转换为字节并打印为 char
input.HexToByte(2).ToList().ForEach(x => Console.WriteLine((char)x));
如何在一个循环中完成所有操作,这样您就不必转换字符串表示形式。这不包含错误处理...
var bytes = new byte[] { 0x34, 0x35, 0x35, 0x37 };
var output = new StringBuilder();
for (int i = 0; i < bytes.Length; i += 2)
{
output.Append(Char.ConvertFromUtf32(
Convert.ToInt32(
ASCIIEncoding.UTF8.GetString(
new byte[] { bytes[i], bytes[i + 1] }, 0, 2), 16)));
}
输出="EW"