将 int 写入值大于 255 的字节
Posted
技术标签:
【中文标题】将 int 写入值大于 255 的字节【英文标题】:writing int to bytes with value greater than 255 【发布时间】:2019-04-01 18:55:33 【问题描述】:问题是我正在尝试分析二进制文件。 然后我有点卡住了如何将 int 转换为值大于 255 的字节 例如我有 0x17b 我怎么能把它作为一个字节在文件中?
在检查二进制文件时,我注意到 0x17b 等于 0xfb 0x02(以字节为单位) 这是怎么发生的?
我在 C# 中尝试过
Convert.ToByte(search.Length)
它给出了无法转换为字节的错误,因为它有超过 255 个值,因为字节中的高字节是ff
这是另一个供参考的例子
0x107 = 0x87 0x02 (in bytes)
0x17B = 0xFB 0x02 (in bytes)
0xAD = 0xAD 0x01 (in bytes)
【问题讨论】:
【参考方案1】:您不能将大于 255 的值转换为字节,因为这是可以存储在单个字节上的最大值。您要做的就是转换为字节数组。
为此,您可以使用BitConverter
来完成这项工作:
int bigValue = 0x17b;
byte[] bytes = BitConverter.GetBytes(bigValue);
由于 int
在这里是 4 个字节,因此您最终会得到一个 7B 01 00 00
作为该值的字节表示形式。
【讨论】:
还是谢谢你..我刚刚意识到你实际上可以从 binaryreader.ReadString() 读取该数组字节以上是关于将 int 写入值大于 255 的字节的主要内容,如果未能解决你的问题,请参考以下文章
将值写入字节数组而不使用 C# unsafe 或 fixed 关键字