J'ai une fonction simple qui saisit le disque dur le numéro de série du lecteur C: \ et le met dans une chaîne:écriture du disque dur chaîne série dans un fichier binaire
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"C:\"");
disk.Get();
string hdStr = Convert.ToString(disk["VolumeSerialNumber"]);
Je puis tenter de convertir la chaîne ci-dessus en ASCII, puis l'écrire dans un fichier binaire, le problème que je rencontre est, lors de la conversion de cette chaîne et l'enregistrement du fichier en utilisant streamwriter, et l'ouverture du fichier dans un éditeur hexadécimal, je vois plus d'octets Je voulais à l'origine écrire ainsi par exemple "16342D1F4A61BC"
Va sortir comme: 08 16 34 2d 1f 4a 61 c2 bc
Il est d'ajouter le 08 et c2 là en quelque sorte ...
La version plus complète est la suivante:
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());
}
Quelqu'un peut-il me aider à comprendre comment ils commencent à être ajoutées?
Vous ne pouvez simplement écrire directement la sortie? – tofutim
Quel est le but de la boucle while? Il y a un Encoding.ASCII.GetBytes (chaîne) pratique qui vous renverra les octets nécessaires de n'importe quelle chaîne. – Joe
Je pense que vous dites que vous voulez voir la représentation hexadécimale de l'identifiant de disque dur lorsque vous affichez votre fichier de sortie en hexadécimal. – tofutim