2013-07-02 5 views
0

Я пытаюсь преобразовать символы в unsigned short, но значение, которое я получаю в m_cmdCode, всегда 0. Некоторый вход был бы очень полезен.type cast char to Unsigned short

int main() 
{ 
char *temp = new char[3]; 
memset(temp,1,3); 
unsigned short m_cmdCode = (unsigned short) atoi(temp); 
printf("%d",m_cmdCode); 
} 

// Я хочу, чтобы m_cmdCode равнялся 111, возможно ли это сделать?

ответ

6

Вы устанавливаете элементы temp на целочисленное значение 1. Вы хотите, чтобы значение символа '1':

memset(temp, '1', 3); 

Обратите внимание, что вы также должны NUL-прекратить temp для atoi надежно работать.

0

он пришел с вашего MemSet, вы ставите 3 байта со значением 1, это не то же самое, чем писать

strcpy(temp, "111") 

может быть, я отменил СРК и Dest

+1

Это будет пытаться писать терминатор и, таким образом, переполнение выделенного массива. –