You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中使用BitConverter.GetBytes向Byte数组写入Int16值报错问题

问题原因与解决方法

编译失败的核心原因

BitConverter.GetBytes(p) 接收Int16类型的变量p时,返回的是长度为2的Byte数组(Int16是16位整数,占用2个字节存储),而readBuffer(z)是单个Byte类型的数组元素,直接赋值会触发类型不匹配错误,这就是代码无法通过编译的关键。

解决方法

根据你的需求选择对应方案:

1. 写入Int16的完整两个字节

确保readBuffer有足够空间(z + 1不能超出数组的最大索引),可以直接逐个赋值:

Dim int16Bytes As Byte() = BitConverter.GetBytes(p)
readBuffer(z) = int16Bytes(0)
readBuffer(z + 1) = int16Bytes(1)

或者用批量复制的方式(适合大量数据处理时更高效):

Dim int16Bytes As Byte() = BitConverter.GetBytes(p)
Buffer.BlockCopy(int16Bytes, 0, readBuffer, z, int16Bytes.Length)

2. 仅写入Int16的单个字节

如果只需要Int16的低字节或高字节,直接取返回数组的对应索引即可:

' 写入低字节
readBuffer(z) = BitConverter.GetBytes(p)(0)
' 写入高字节
readBuffer(z) = BitConverter.GetBytes(p)(1)

内容的提问来源于stack exchange,提问作者Terry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:08:14