我们目前有一些代码可以从int中提取数字,但我需要将其转换到一个没有snprintf的平台,并且我担心会发生缓冲区溢出。我已经开始编写自己的可移植(并优化的)snprintf,但我被告知在这里询问,以防有更好的想法。
int extract_op(int instruction)
{
char buffer[OP_LEN+1];
snprintf(buffer, sizeof(buffer), "%0*u", OP_LEN, instruction);
return (buffer[1] - 48) * 10 + buffer[0] - 48;
}
我们使用C字符串是因为速度非常重要。
return (buffer[1] - '0') * 10 + buffer[0] - '0';
这样做并不能解决你的问题,但是这样会更加清晰明了。 - zneakbuffer[1]
显然比buffer[0]
更重要。 - Matthew Flaschen