有没有办法将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变量。
答案 0 :(得分:2)
r.ReadBytes(1);
返回byte[]
然后调用BitConverter.ToString(bytearray)
并将字节数组作为参数执行下一步的问题:
转换指定数组的每个元素的数值 字节到其等效的十六进制字符串表示
BinaryReader
有方法
int ReadInt32()
byte ReadByte()
将blockSize
的类型更改为int
和binSize
更改为byte
并使用这些方法
int blockSize = br.ReadInt32();
byte binSize = br.ReadByte();
textBox1.Text = blockSize.ToString();
textBox2.Text = binSize.ToString();
来自MSDN:
ReadInt32()
从当前流中读取一个4字节有符号整数并前进 流的当前位置为四个字节。
ReadByte()
从当前流中读取下一个字节并前进当前流 流的位置是一个字节。