Как поместить / получить INT в / из массива WCHAR? - PullRequest
0 голосов
/ 06 июня 2010

как я могу поместить переменную типа INT в массив wchar?

Спасибо

EDIT:

Извините за короткий вопрос. Да, мы можем привести INT к массиву WCHAR, используя WCHAR *, но когда мы возвращаем результат (WCHAR [] в INT), я просто понимаю, что нам нужно прочитать размер 2 из массива WCHAR, так как INT равен 4 байтам, что равный 2 WCHAR.

WCHAR arData[20];
INT iVal = 0;
wmemcpy((WCHAR*)&iVal, arData, (sizeof(INT))/2);

Это самый безопасный способ получить обратно значение INT из массива WCHAR

Ответы [ 3 ]

1 голос
/ 06 июня 2010

Если вы хотите просто назначить int в массив wchar, используйте приведение:

wchar wArray[N];
int num = xxx;
wArray[0] = (wchar)num;

Если вы хотите вставить строковое значение числа, вам нужно использовать функцию преобразования, например, itoa ().

1 голос
/ 06 июня 2010

Технически, то, как вы это делаете, небезопасно из-за строгого совмещения имен и выравнивания. Самый безопасный и самый переносимый способ - читать символы один за другим и комбинировать их со сдвигами битов.

Хотя ваш код будет работать на ПК с Windows, не ожидайте, что он будет переносимым или будет работать для всех компиляторов и настроек компилятора.

Базовый пример (может быть улучшен, чтобы быть более переносимым в отношении целочисленных размеров, порядка байтов и т. Д.):

WCHAR arData[20];

...
// Read little-endian 32-bit integer from two 16-bit chars:
INT iVal = arData[0] | arData[1] << 16;
1 голос
/ 06 июня 2010
WCHAR t[100];
int x = 3;
*((int *)t) = x;

или, если вы хотите текст:

при условии, что ваше приложение является Unicode, используйте wsprintf

WCHAR t[100];
int x = 3;
wsprintf(t, "%d", &x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...