gpt4 book ai didi

c# - 将硬盘串行字符串写入二进制文件

转载 作者:行者123 更新时间:2023-11-30 18:04:25 27 4
gpt4 key购买 nike

我有一个简单的函数,可以从 C:\驱动器中获取硬盘驱动器序列号并将其放入一个字符串中:

ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"C:\"");
disk.Get();
string hdStr = Convert.ToString(disk["VolumeSerialNumber"]);

然后我尝试将上面的字符串转换为 ASCII,然后将其写出到二进制文件,我遇到的问题是,当转换此字符串并使用流编写器保存文件,并以十六进制编辑器,我看到了更多我原本想写的字节,例如“16342D1F4A61BC”

结果为:08 16 34 2d 1f 4a 61 c2 bc

它以某种方式在其中添加了 08 和 c2...

更完整的版本如下:

string constructor2 = "16342D1F4A61BC";
string StrValue = "";

while (constructor2.Length > 0)
{
StrValue += System.Convert.ToChar(System.Convert.ToUInt32(constructor2.Substring(0, 2), 16)).ToString();
// Remove from the hex object the converted value
constructor2 = constructor2.Substring(2, constructor2.Length - 2);
}

FileStream writeStream;
try
{
writeStream = new FileStream(Path.GetDirectoryName(Application.ExecutablePath) + "\\license.mgr", FileMode.Create);
BinaryWriter writeBinay = new BinaryWriter(writeStream);
writeBinay.Write(StrValue);
writeBinay.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}

任何人都可以帮助我了解如何添加这些内容吗?

最佳答案

试试这个:

string constructor2 = "16342D1F4A61BC";
File.WriteAllBytes("test.bin", ToBytesFromHexa(constructor2));

使用以下辅助例程:

public static byte[] ToBytesFromHexa(string text)
{
if (text == null)
throw new ArgumentNullException("text");

List<byte> bytes = new List<byte>();
bool low = false;
byte prev = 0;

for (int i = 0; i < text.Length ; i++)
{
byte b = GetHexaByte(text[i]);
if (b == 0xFF)
continue;

if (low)
{
bytes.Add((byte)(prev * 16 + b));
}
else
{
prev = b;
}
low = !low;
}
return bytes.ToArray();
}

public static byte GetHexaByte(char c)
{
if ((c >= '0') && (c <= '9'))
return (byte)(c - '0');

if ((c >= 'A') && (c <= 'F'))
return (byte)(c - 'A' + 10);

if ((c >= 'a') && (c <= 'f'))
return (byte)(c - 'a' + 10);

return 0xFF;
}

关于c# - 将硬盘串行字符串写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155734/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com