gpt4 book ai didi

c# - WriteByte,如何使用

转载 作者:太空宇宙 更新时间:2023-11-03 22:20:36 25 4
gpt4 key购买 nike

我如何使用 WriteByte?下面的代码将不起作用,同时出现 CS1502 错误和“stream.WriteByte(totalSeasons);”处的 CS1502 错误。线。这令人沮丧,因为我非常接近完成这个程序。

本质上,我的问题是我需要通过单击按钮将二进制数据写入文件。我可以这样写,例如:stream.WriteByte(0xCD);问题是我需要让用户输入他们想要写入文本框的数据,然后点击一个按钮,数据就会从十进制转换为十六进制,然后输入。我想我已经弄清楚了转换部分,但我不能用数据编辑二进制文件,因为 WriteByte 似乎只能写入像 0xCD 这样的十六进制值,而且似乎没有办法存储十六进制值并仍然写入它。我试过 stream.WriteByte(ByteName);但这伴随着上述错误。

void BtnTotalSeasonsClick(object sender, EventArgs e)
{
using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite))
{
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
Byte[] totalSeasons = enc.GetBytes(txtTotalSeasons.Text);
stream.Position = 4;
stream.WriteByte(totalSeasons);
}
}

最佳答案

totalSeasons 超过一个字节,因此您可以调用 Write写入整个字节 block 的方法。

txtTotalSeasons.Text 应该变成一个字节吗?也许您正在寻找 Byte.TryParse而不是 Encoding.GetBytes

编辑:提供完整的错误消息,而不仅仅是数字。另外,文本框中的确切内容。您似乎对十六进制、十进制、二进制和 ASCII 感到困惑。它们是数字的不同字符串表示形式。

0xCD 不是十六进制值。它是数字的符合 C# 的十六进制表示形式。 (C# 不允许的另一种十六进制表示是 CDh)。编译器将其转换为 .NET 内部格式的数字(恰好是二进制,但这并不重要)。然后 WriteByteWrite 调用将数字以二进制形式存储到文件中。您将从 stream.WriteByte(0xCD)stream.WriteByte(206)stream.WriteByte(0316) 获得相同的结果因为编译器将它们全部转换为相同的内部表示。如果你想写一个变量,那么根本没有理由使用十六进制,你需要 WriteByte 期望的内部表示。

你说用户输入一个 0 到 255 之间的十进制数?那么所需要的转换就是从十进制字符串表示到内部表示,这叫做“解析”。

试试这段代码:

stream.WriteByte(Byte.Parse(txtTotalSeasons.Text));

关于c# - WriteByte,如何使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221059/

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