код 1
uint8_t ucAESKey_BASE64[] = "oFqTg0a0VrjiVU76M1WRVw==";
uint8_t *pucAESKey_BASE64;
pucAESKey_BASE64 = ucAESKey_BASE64;
код 2
uint8_t *pucAESKey_BASE64 = "oFqTg0a0VrjiVU76M1WRVw==";
Я использую mbedtls_base64_decode() для декодирования строки base64, API mbedTLS.
int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen,
const unsigned char *src, size_t slen )
Моя программа такая:
mbedtls_base64_decode(ucAESKey, sizeof(ucAESKey), &olen,
pucAESKey_BASE64, strlen(pucAESKey_BASE64));
Если параметр *src использует код 2 , вывод будет
00 00 00 83 46 b4 56 b8 e2 55 4e fa 33 55 91 57
если *src использует код 1, вывод
a0 5a 93 83 46 b4 56 b8 e2 55 4e fa 33 55 91 57
и это правильно. Почему?
strlen
для буфера, отличного отconst char *
? - person PaulMcKenzie   schedule 13.04.2017ucAESKey
иolen
. - person Michael Burr   schedule 13.04.2017char *pcaAESKey_BASE64 = "oFqTg0a0VrjiVU76M1WRVw==";
- person Taha Paksu   schedule 13.04.2017sizeof
с указателями, ожидая, что он вернет то же, что иstrlen
. Инициализируется лиucAESKey
одинаково в обоих случаях? - person Groo   schedule 13.04.2017