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
相关产品推荐
相关产品推荐

