从管道读取:
unsigned int sample_in = 0; //4 bytes - 32bits, right?
unsigned int len = sizeof(sample_in); // = 4 in debugger
while (len > 0)
{
if (0 == ReadFile(hRead,
&sample_in,
sizeof(sample_in),
&bytesRead,
0))
{
printf("ReadFile failed\n");
}
len-= bytesRead; //bytesRead always = 4, so far
}
在调试器中,第一次迭代通过:
sample_in = 536739282 //36 bits?
如果输入的样本是无符号整数,这怎么可能?我想我缺少一些非常基本的东西,对我放轻松!
谢谢
最佳答案
从您说 //36 bits?
的评论来看,我怀疑您希望数据以 BCD 格式发送:换句话说,每个数字都是一个数字占用四位,或每个字节两位数。这种方式会导致空间浪费,但是,您将使用四位,但不使用值“10”到“15”。
事实上,整数在内部以二进制表示,因此允许一个 32 位数字最多表示 2^32 个不同的值。结果是 4,294,967,295(无符号),它恰好比您在 sample_in
中看到的数字大很多。
关于c++ - 将大小为 4 字节的管道读入 4 字节 int 如何返回更多数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3135738/