C# 将ByteArray转换为字符串以在文本框c中使用#
是的,我已经阅读了大约5个小时的解决方案,没有一个有效。 BitConverter只创建一个空白字符串 基本上,我正在做的是创建一个levelreader,它将通过hex读取levels内容,并最终在树视图中显示它。所以我要做的第一件事是制作一个字节数组,我可以在其中编辑数据,我已经做到了。 但是,现在我想在屏幕上显示数据。据我所知,不能在屏幕上显示字节数组,必须先将其转换为字符串 这就是我想做的:C# 将ByteArray转换为字符串以在文本框c中使用#,c#,arrays,string,type-conversion,C#,Arrays,String,Type Conversion,是的,我已经阅读了大约5个小时的解决方案,没有一个有效。 BitConverter只创建一个空白字符串 基本上,我正在做的是创建一个levelreader,它将通过hex读取levels内容,并最终在树视图中显示它。所以我要做的第一件事是制作一个字节数组,我可以在其中编辑数据,我已经做到了。 但是,现在我想在屏幕上显示数据。据我所知,不能在屏幕上显示字节数组,必须先将其转换为字符串 这就是我想做的: using (OpenFileDialog fileDialog = new O
using (OpenFileDialog fileDialog = new OpenFileDialog())
{
if (fileDialog.ShowDialog() != DialogResult.Cancel)
{
textBox1.Text = fileDialog.FileName;
using (BinaryReader fileBytes = new BinaryReader(new MemoryStream(File.ReadAllBytes(textBox1.Text))))
{
string s = null;
int length = (int)fileBytes.BaseStream.Length;
byte[] hex = fileBytes.ReadBytes(length);
File.WriteAllBytes(@"c:\temp_file.txt", hex);
}
}
}
}
注意:我已删除我的转换尝试,因为我尝试的任何转换都不起作用。
有人知道我如何使用这些数据并将其转换为字符串,然后将其添加到文本框中吗?(当然,我知道如何做后者。我对前者有困难。)
如果是,请举例说明
我可能应该说得更清楚些;我不想将字节转换为相应的字符(即,如果它是0x43,我不想打印“C”。我想打印“43”。首先,您只需要将字节转换为更有用的字符,例如UTF8,然后您就可以从中获取字符串。 类似于(在我的例子中:iso-8859-1):
首先,您只需要将字节转换为更有用的内容,例如UTF8,然后您就可以从中获取字符串。 类似于(在我的例子中:iso-8859-1):
您知道字节数组存储在哪个编码中吗 你需要方法 下面是一个例子
您知道字节数组存储在哪个编码中吗 你需要方法 下面是一个例子
您可以将数据转换为十六进制:
StringBuilder hex = new StringBuilder(theArray.Length * 2);
foreach (byte b in theArray)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
您可以将数据转换为十六进制:
StringBuilder hex = new StringBuilder(theArray.Length * 2);
foreach (byte b in theArray)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
确实没有显示随机字节序列的默认方式。选项:
- base64编码(Convert.ToBase64String)-将生成不可读但至少安全可打印的字符串
- 十六进制编码每个字节,并在每个字节的表示之间用空格连接,每行可能分成若干(即16)个字节的组。-将产生更多类似黑客的视图
- 将所有字节映射到可打印字符(可能是彩色的)并可能拆分为多行-将生成类似矩阵的数据视图
- base64编码(Convert.ToBase64String)-将生成不可读但至少安全可打印的字符串
- 十六进制编码每个字节,并在每个字节的表示之间用空格连接,每行可能分成若干(即16)个字节的组。-将产生更多类似黑客的视图
- 将所有字节映射到可打印字符(可能是彩色的)并可能拆分为多行-将生成类似矩阵的数据视图
Sys
// Example of the BitConverter.ToString( byte[ ] ) method.
using System;
class BytesToStringDemo
{
// Display a byte array with a name.
public static void WriteByteArray( byte[ ] bytes, string name )
{
const string underLine = "--------------------------------";
Console.WriteLine( name );
Console.WriteLine( underLine.Substring( 0,
Math.Min( name.Length, underLine.Length ) ) );
Console.WriteLine( BitConverter.ToString( bytes ) );
Console.WriteLine( );
}
public static void Main( )
{
byte[ ] arrayOne = {
0, 1, 2, 4, 8, 16, 32, 64, 128, 255 };
byte[ ] arrayTwo = {
32, 0, 0, 42, 0, 65, 0, 125, 0, 197,
0, 168, 3, 41, 4, 172, 32 };
byte[ ] arrayThree = {
15, 0, 0, 128, 16, 39, 240, 216, 241, 255,
127 };
byte[ ] arrayFour = {
15, 0, 0, 0, 0, 16, 0, 255, 3, 0,
0, 202, 154, 59, 255, 255, 255, 255, 127 };
Console.WriteLine( "This example of the " +
"BitConverter.ToString( byte[ ] ) \n" +
"method generates the following output.\n" );
WriteByteArray( arrayOne, "arrayOne" );
WriteByteArray( arrayTwo, "arrayTwo" );
WriteByteArray( arrayThree, "arrayThree" );
WriteByteArray( arrayFour, "arrayFour" );
}
}
/*
This example of the BitConverter.ToString( byte[ ] )
method generates the following output.
arrayOne
--------
00-01-02-04-08-10-20-40-80-FF
arrayTwo
--------
20-00-00-2A-00-41-00-7D-00-C5-00-A8-03-29-04-AC-20
arrayThree
----------
0F-00-00-80-10-27-F0-D8-F1-FF-7F
arrayFour
---------
0F-00-00-00-00-10-00-FF-03-00-00-CA-9A-3B-FF-FF-FF-FF-7F
*/
StringBuilder hex = new StringBuilder(theArray.Length * 2);
foreach (byte b in theArray)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();