确定Byte数组是什么?

时间:2013-02-06 20:21:41

标签: c# byte

我最近开始学习C#Networking,我想知道如何判断收到的Byte数组是文件还是字符串?

5 个答案:

答案 0 :(得分:5)

字节数组只是一个字节数组。它刚刚获得了数据。

如何解释数据取决于您。例如,文本文件和字符串之间有什么区别?

从根本上说,如果您的应用程序需要知道如何解释数据,那么您必须将其纳入协议。

答案 1 :(得分:1)

字节数组只是一个字节数组。但是,您可以使原始字节数组包含一个描述其类型的字节(假设您是它的创建者)。然后你找到这个描述符字节并用它来做决定。

答案 2 :(得分:0)

字符串是编码的字节数组;文件可以包含字符串和/或二进制数据。

ASCII字符串使用0-127之间的字节值来表示字符和控制代码。对于UTF8,人们已经编写了验证例程(https://stackoverflow.com/a/892443/884862)。

在假设它是二进制文件之前,您必须检查数组中的所有字符串编码特征。

编辑以下是使用文件的签名(前X个字节)对文件类型Using .NET, how can you find the mime type of a file based on the file signature not the extension进行分类以确定其mimetype的问题。

答案 3 :(得分:-1)

不,你不能。数据是数据,你必须在你的网络通信形式的协议上进行分层,它需要说:“如果我看到的第一个字节是1,则接下来的四个字节代表一个{{ 1}},如果我看到int读取下一个字节,那就是后面的文本字符串的长度......

比发明自己的协议更简单的解决方案是使用预构建的解决方案,它为您提供更高级别的抽象,如WCF,因此您不需要处理字节数组。

答案 4 :(得分:-1)

不完全是“文件”,数组包含数据。你应该遍历那个数组并写入数据,

试试这个:

foreach(string data in array)
{ 
    Console.WriteLine(data); 
} 

现在,如果它不包含字符串,而是数据,则可以简单地使用

foreach(var data in array)
{
    Console.WriteLine(data.ToString());
}