Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C#字节数组转换为变量_C#_Byte - Fatal编程技术网

将C#字节数组转换为变量

将C#字节数组转换为变量,c#,byte,C#,Byte,我有一个字节数组,我想把它的值转换成变量。 我知道字符串、无符号int等格式的值 byte[] buffer = File.ReadAllBytes("binarydata.bin"); string value1 = ??? uint16 value2 = ??? string value3 = ??? uint32 value4 = ??? 如何分配值?我知道第一个值是一个8位的字符串,第二个值是一个usigned 16位int,第三个值是一个12位的字符串,第四个值是一个unsigned

我有一个字节数组,我想把它的值转换成变量。 我知道字符串、无符号int等格式的值

byte[] buffer = File.ReadAllBytes("binarydata.bin");
string value1 = ???
uint16 value2 = ???
string value3 = ???
uint32 value4 = ???
如何分配值?我知道第一个值是一个8位的字符串,第二个值是一个usigned 16位int,第三个值是一个12位的字符串,第四个值是一个unsigned 32位int。

您可以简单地使用

在特定编码中将基元数据类型作为二进制值读取

示例

using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open)))
{
    var aspectRatio = reader.ReadSingle();
    var tempDirectory = reader.ReadString();
    var autoSaveTime = reader.ReadInt32();
    var showStatusBar = reader.ReadBoolean();

    Console.WriteLine("Aspect ratio set to: " + aspectRatio);
    Console.WriteLine("Temp directory is: " + tempDirectory);
    Console.WriteLine("Auto save time set to: " + autoSaveTime);
    Console.WriteLine("Show status bar: " + showStatusBar);
}
从xanatos更新


ReadString从当前流中读取字符串。字符串以长度作为前缀,一次编码为七位整数。

您可以使用BinaryReader,本例以二进制形式写入数据。读取二进制数据并分配给变量后

using System;
using System.IO;

class ConsoleApplication
{
const string fileName = "AppSettings.dat";

static void Main()
{
    WriteDefaultValues();
    DisplayValues();
}

public static void WriteDefaultValues()
{
    using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
    {
        writer.Write(1.250F);
        writer.Write(@"c:\Temp");
        writer.Write(10);
        writer.Write(true);
    }
}

public static void DisplayValues()
{
    float aspectRatio;
    string tempDirectory;
    int autoSaveTime;
    bool showStatusBar;

    if (File.Exists(fileName))
    {
        using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open)))
        {
            aspectRatio = reader.ReadSingle();
            tempDirectory = reader.ReadString();
            autoSaveTime = reader.ReadInt32();
            showStatusBar = reader.ReadBoolean();
        }

        Console.WriteLine("Aspect ratio set to: " + aspectRatio);
        Console.WriteLine("Temp directory is: " + tempDirectory);
        Console.WriteLine("Auto save time set to: " + autoSaveTime);
        Console.WriteLine("Show status bar: " + showStatusBar);
        }
    }
}

classUse
BinaryReader
BitConverter
。此文件是如何创建的?这一点很重要,因为
字符串
值需要在文件中显示一些元数据来指示字符串的长度。(通常是长度前缀,但谁知道呢?)使用BitConverter和ToString,我得到的值是十六进制的,而不是人类可读的文本,如何才能使其可读?请注意
ReadString()
所需的格式。我不认为其他人以同样的方式编码字符串。