【问题标题】:writing int to bytes with value greater than 255将 int 写入值大于 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)

【问题讨论】:

    标签: arrays debugging binary hex byte


    【解决方案1】:

    您不能将大于 255 的值转换为字节,因为这是可以存储在单个字节上的最大值。您要做的就是转换为字节数组。 为此,您可以使用BitConverter 来完成这项工作:

    int bigValue = 0x17b;
    byte[] bytes = BitConverter.GetBytes(bigValue);
    

    由于 int 在这里是 4 个字节,因此您最终会得到一个 7B 01 00 00 作为该值的字节表示形式。

    【讨论】:

    • 还是谢谢你..我刚刚意识到你实际上可以从 binaryreader.ReadString() 读取该数组字节
    猜你喜欢
    • 2014-10-25
    • 2014-05-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多