Похоже, имя typedef BYTE
определяется следующим образом
typedef unsigned char BYTE;
В этом случае приведите тип unsigned char *
к типу char *
(или const char *
), поскольку существуетнет неявного преобразования между типами.Например,
BYTE text1[] = {"abcd"};
sha256_update(&ctx, text1, strlen( ( char * )text1 ) );
Примите во внимание, что для такой инициализации массива
BYTE text1[] = {"abcd"};
(когда размер массива определяется его инициализацией со строкой), вы можете получитьдлина строки также следующим образом
sizeof( text1 ) - 1
Вот демонстрационная программа
#include <string.h>
#include <stdio.h>
typedef unsigned char BYTE;
int main( void )
{
BYTE text1[] = {"abcd"};
size_t n = strlen( ( char * )text1 );
printf( "n = %zu\n", n );
printf( "sizeof( text1 ) - 1 = %zu\n", sizeof( text1 ) - 1 );
}
Ее вывод
n = 4
sizeof( text1 ) - 1 = 4