2016-10-04 123 views
-2

我正在研究一个具有3个参数的函数。其中一个参数是输入数组的字节长度。它是一个int,所以如果length = 4,那么它就是说输入数组的长度是4个字节(输入和输出数组是另外两个参数)。如果长度不是4的倍数,我们需要用零填充直到它为止。我的TA告诉我,我应该从文件中读取长度并将其存储在一个字节数组中,然后告诉我应该用0x00填充它,直到它是四的倍数。这导致我到我的问题:从文件中读取字节数组的数据

1)我怎么声明一个字节数组?
2)用零填充它像包含[...,0x00,0x00,0x00]一样简单,作为数组中的元素?

+0

不,他没有。他告诉你要读长度,四舍五入,创建一个长度的字节数组,读入数据,并在必要时用零填充字节数组, – EJP

+0

是的。我很高兴你有能力澄清我对这项任务的改写不足。 –

回答

0

我该如何声明一个字节数组?

uint8_t array [size];

填充阵列

for (unsigned int i = 0; i < padding_size; ++i) 
{ 
    array[i] = 0; 
} 

另一种技术是在阵列设置到焊盘值,则其值更换必要的槽:

std::fill(&array[0], &array[size], 0); 
array[3] = value; 

如果性能结合,您可能想要展开循环并执行多个分配:

array[0] = 0; 
array[1] = 0x0; // Same as 0. 
array[2] = 0; 
array[3] = value; 

大多数计算机更喜欢处理数据指令。跳跃或分支往往会刺激他们,因为他们需要花时间评估分支或跳跃。