将 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 中将 int 转换为 2 字节的十六进制值

将int写入长度为4的字节[重复]

java 读取byte[] 指定字节

将值写入字节数组而不使用 C# unsafe 或 fixed 关键字

是否合法写入并集中的字节数组并从int读取以在MISRA C中转换值?

RODBC::sqlSave() 创建表,警告:在列中截断为 255 个字节?