(char*) problem
Unsigned int ab

The ab thus obtained is an unsigned integer variable. Ab is the address of the variable ab, that is, a pointer of type "unsigned int *". "(unsigned char*)" means cast, where the type of "unsigned int *" is changed to the type of "unsigned char *".

You can refer to the following code:

Unsigned int ab

Unsigned int * pui = & ab;

Unsigned char *pUC = (unsigned char *) pui;