C#:Int 到 Hex Byte 的转换以写入 Hex 文件
C# : Int to Hex Byte conversion to write into an Hex File
我在将整数转换为十六进制格式的字节数组以写入我的十六进制文件时遇到问题。
我已经阅读并尝试了我在此处和许多其他网站上浏览过的几种解决方案。
我从文本框中读取整数并将其转换为这样的整数:
int value= int.Parse(textEditValue.EditValue.ToString());
此数字的示例输入如下:
int value= 568
我需要像这样写入 hex 文件:
38 36 35 //reversed version of 568 because of endiannes
我试过的是:
byte[] intBytes = BitConverter.GetBytes(value);
Array.Reverse(intBytes); // Because the hex-file is little-endian
byte[] resultBytes = intBytes;
当上面的代码运行时,它会像这样写入 hex 文件:
38 02 00 00
我是如何写入文件的:
for(int i = 0x289C; i >= 0x289C - resultBytes.Length; i--)
{
binaryWriter.BaseStream.Position = i;
binaryWriter.Write(resultBytes[count]);
count++;
}
感谢任何帮助或建议。
您的代码将整数转换为十六进制是正确的。
568
的十六进制表示形式是 00 00 02 38
- 对于小端字节序如此颠倒,你最终会得到你所得到的。
要获得所需的输出,您需要查看它,而不是整数,而是 ASCII 字符串。如果您需要确保文本输入可以转换为整数,您可以这样做:
if (int.TryParse(textEditValue.EditValue.ToString(), out int myInt)){
byte[] intBytes = Encoding.ASCII.GetBytes(textEditValue.EditValue.ToString());
Array.Reverse(intBytes); // Because the hex-file is little-endian
byte[] resultBytes = intBytes;
}
else {
//Not a valid integer
}
我在将整数转换为十六进制格式的字节数组以写入我的十六进制文件时遇到问题。 我已经阅读并尝试了我在此处和许多其他网站上浏览过的几种解决方案。
我从文本框中读取整数并将其转换为这样的整数:
int value= int.Parse(textEditValue.EditValue.ToString());
此数字的示例输入如下:
int value= 568
我需要像这样写入 hex 文件:
38 36 35 //reversed version of 568 because of endiannes
我试过的是:
byte[] intBytes = BitConverter.GetBytes(value);
Array.Reverse(intBytes); // Because the hex-file is little-endian
byte[] resultBytes = intBytes;
当上面的代码运行时,它会像这样写入 hex 文件:
38 02 00 00
我是如何写入文件的:
for(int i = 0x289C; i >= 0x289C - resultBytes.Length; i--)
{
binaryWriter.BaseStream.Position = i;
binaryWriter.Write(resultBytes[count]);
count++;
}
感谢任何帮助或建议。
您的代码将整数转换为十六进制是正确的。
568
的十六进制表示形式是 00 00 02 38
- 对于小端字节序如此颠倒,你最终会得到你所得到的。
要获得所需的输出,您需要查看它,而不是整数,而是 ASCII 字符串。如果您需要确保文本输入可以转换为整数,您可以这样做:
if (int.TryParse(textEditValue.EditValue.ToString(), out int myInt)){
byte[] intBytes = Encoding.ASCII.GetBytes(textEditValue.EditValue.ToString());
Array.Reverse(intBytes); // Because the hex-file is little-endian
byte[] resultBytes = intBytes;
}
else {
//Not a valid integer
}