我最近开始学习C#Networking,我想知道如何判断收到的Byte数组是文件还是字符串?
答案 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());
}