Utwórz ciąg UTF-16 z znaku *

Mam więc standardowy ciąg C:

char* name = "Jakub";

I chcę przekonwertować go na UTF-16. Zorientowałem się, że UTF-16 będziedwa razy dłuższy - bierze jedna postaćdwa znaki.
Więc tworzę inny ciąg:

char name_utf_16[10];  //"Jakub" is 5 characters

Teraz wierzę, że ze znakami ASCII będę używał tylko niższych bajtów, więc dla wszystkich będzie tak74 00 dlaJ i tak dalej. Z takim przekonaniem mogę stworzyć taki kod:

void charToUtf16(char* input, char* output, int length) {
    /*Todo: how to check if output is long enough?*/
    for(int i=0; i<length; i+=2)  //Step over 2 bytes
    {
        //Lets use little-endian - smallest bytes first
        output[i] = input[i];
        output[i+1] = 0;  //We will never have any data for this field
    }
}

Ale z tym procesem skończyłem"Jkb". Nie wiem, jak to sprawdzić - właśnie wysłałem łańcuch do serwera Minecraft Bukkit. I to właśnie powiedział po rozłączeniu:

13:34:19 [INFO] Rozłączaniejkb?? [/127.0.0.1:53215]: Nieaktualny serwer!

Uwaga: Wiem, że Minecraft używa big-endian. Powyższy kod jest tylko przykładem, w rzeczywistości moja konwersja została zaimplementowana w klasie.

questionAnswers(3)

yourAnswerToTheQuestion