[英]uint64_t string conversion and extraction of first 4 characters
我收到了这个 function 来检查给定的 4 位 PIN 码是否正确。 此 PIN 是长度为 5 的字符串(例如“1234\0”)。 真正的 PIN 是经过一些计算得到的,通过将 uint64_t 转换为字符串并提取前 4 个字符:
uint8_t pin_verification(uint64_t number, uint8_t *pin)
{
uint8_t string[14];
// ASCII string conversion
sprintf((char *)(string), "%llu", number);
// Pin verification
if (memcmp(pin, string, 4))
{
return 0;
}
else
{
return 1;
}
}
有人告诉我它可以工作,但我试图在 STM32 芯片上运行它,而sprintf
function 不能正常工作。 我已经尝试过使用inttypes.h
库中的PRIu64
修饰符等解决方案,但它仍然不起作用。
如果有办法避免使用sprintf
,我不介意更改此 function 。
谢谢!
在 STM32 芯片上运行它并且 sprintf function 不能正常工作
您正在使用不支持 long long printf 格式说明符的标准 C 库实现(很可能是“nano”中的newlib
)版本。
任何一个:
-specs=nano.specs
或-lnano
注意:
told that it can be 14 digits long maximum
然后 14 字节缓冲区太短而无法存储 14 位的字符串。snprintf
来防止缓冲区溢出
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.