将Byte []转换为Int8

时间:2016-11-04 16:48:20

标签: c#

有没有办法将Byte []转换为int8?我得到了一个二进制文件,其中包含测试的输入参数列表。参数大小从uint32到uint8不等。我在文件中读取没有问题,在GUI中显示值是多么棘手。

这是我正在做的事情的基础:

private Byte[] blockSize;
private Byte[] binSize;

FileStream filen = File.OpenRead(file);
BinaryReader br = new BinaryReader(filen);

blockSize = br.ReadBytes(4);
binSize = br.ReadBytes(1);

考虑到参数文件的前32位(4字节)是blockSize而接下来的8位(1字节)是我的binSize变量的值,没有问题。问题出在哪里就是显示它。

textBox1.Text = BitConverter.ToInt32(blockSize, 0).ToString();
textBox2.Text = BitConverter.ToString(binSize, 0).ToString();

假设我的二进制输入文件包含以下5个字节的数据“0A 00 00 00 0A”。我的第一个文本框显示“10”,我的第二个文本框显示“0A”。我希望将十六进制值转换为更易于理解的十进制值。只要输入文件中的参数大于1个字节,它似乎工作正常,所以我可以使用ToInt16或ToInt32轻松转换它,但我没有8bit变量。

1 个答案:

答案 0 :(得分:2)

r.ReadBytes(1);返回byte[]然后调用BitConverter.ToString(bytearray)并将字节数组作为参数执行下一步的问题:

  

转换指定数组的每个元素的数值   字节到其等效的十六进制字符串表示

BinaryReader有方法

int ReadInt32()
byte ReadByte()

blockSize的类型更改为intbinSize更改为byte并使用这些方法

int blockSize = br.ReadInt32();
byte binSize = br.ReadByte();

textBox1.Text = blockSize.ToString();
textBox2.Text = binSize.ToString();

来自MSDN:
ReadInt32()

  

从当前流中读取一个4字节有符号整数并前进   流的当前位置为四个字节。

ReadByte()

  

从当前流中读取下一个字节并前进当前流   流的位置是一个字节。