【发布时间】:2020-08-15 06:03:26
【问题描述】:
我有一个函数PostProcess,它是固定的,不能更改。它需要一个 6 字节的数组并输出一个 24 位的值。
我正在尝试计算对于给定的 24 位数字,PreProcess 的哪个函数会给我相同的输出和输入值。
例如,如果我将输入值设置为 2^24 -1 = 16777215,那么我希望在输出中得到 16777215。
目前尚不清楚我将如何实现此功能。我添加了下面的代码和PostProcess的功能测试
void PreProcess(unsigned int in, unsigned char out[]);
int PostProcess(unsigned char pu8Input[]);
int main()
{
unsigned int InputVal = 16777215; // max value for 24 bits
unsigned char PreProcessed[6] = {0};
PreProcess(InputVal,PreProcessed);
unsigned int OutputVal = PostProcess(PreProcessed);
if(InputVal == OutputVal)
printf("True!");
else
printf("False");
return 0;
}
void PreProcess(unsigned int in, unsigned char out[])
{
//TODO
}
int PostProcess(unsigned char pu8Input[])
{
unsigned int u32Out = 0u;
u32Out += (pu8Input[0] - '0') * 100000;
u32Out += (pu8Input[1] - '0') * 10000;
u32Out += (pu8Input[2] - '0') * 1000;
u32Out += (pu8Input[3] - '0') * 100;
u32Out += (pu8Input[4] - '0') * 10;
u32Out += (pu8Input[5] - '0') * 1;
u32Out &= 0xFFFFFF;
return u32Out;
}
【问题讨论】:
-
您是否假设这 6 个字节中的每一个都具有 ['0','9'] 范围内的值?
-
@JohnColeman 这些不是 6 个任意字节,它们是 6 个数字字符。
-
pu8Input 中存储的值可以是任意 8 位数字。重要的是输出与给定的输入值匹配。如果可能的话。编辑:我删除了我之前的评论,因为它不正确。
-
你确认
InputVal可以有的最大值是16777215吗?