[英]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.