将C#字节数组转换为变量
我有一个字节数组,我想把它的值转换成变量。 我知道字符串、无符号int等格式的值将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
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()
所需的格式。我不认为其他人以同样的方式编码字符串。