PHP y C ++ para la unidad de código UTF-8 en orden inverso en caracteres chinos

El punto de código Unicode para la palabra china 你好 es 4F60, 597D respectivamente. que obtuve de esta herramientahttp://rishida.net/tools/conversion/

La siguiente aplicación de consola imprimirá la secuencia de bytes hexadecimales de 你好 como 60: 4F: 7D: 59. Como puede ver, está en orden inverso al punto de código Unicode para cada carácter. 60 primero, luego 4F, en lugar de 4F y luego 60. ¿Por qué es así? ¿Quién es correcto? ¿Las herramientas o la aplicación de consola? O ambos ?

void printHex (char * buf, char *filename)
{
    FILE *fp;
    fp=fopen(filename, "w");

    if(fp == NULL) return;

    int len2 = sizeof(buf);
    int i;
    char store[10];
    for (i = 0; i < sizeof(buf); i++)
    {
        if (i > 0) fprintf(fp,":");
        //sprintf(store, );

        fprintf(fp,"%02X", buf[i]);
    }
    fprintf(fp,"\n");
    fclose(fp);
}

int main(int argc, char* argv[])
{
    char * str3 = (char*)(L"你好");
    printHex( str3, "C:\\Users\\william\\Desktop\\My Document\\test2.txt");

        return 0;
}

Mientras estoy en PHP cuando uso esta función mb_convert_encoding.

echo bin2hex(mb_convert_encoding("你好", "UTF-16", "UTF-8")); //result : 4f60 597d
echo bin2hex(mb_convert_encoding("恏絙", "UTF-16", "UTF-8")); //result : 604f 7d59

El PHP tiene el mismo resultado que la herramienta en línea, pero cuando uso esta codificación para imprimir 你好 en una impresora usando las funciones php_printer.dll, la impresión se convierte en 恏 絙 y viceversa. Pero la aplicación de C ++ puede imprimir correctamente. ¿Qué podría estar mal con PHP? ¿Y la solución?

Respuestas a la pregunta(1)

Su respuesta a la pregunta