У меня есть переменная unsigned char, которая содержит значение 40, например. Я хочу, чтобы переменная int получала это значение. Какой самый простой и эффективный способ сделать это? спасибо.unsigned char to int in C++
ответ
unsigned char c = 40;
int i = c;
Предположительно должно быть больше на ваш вопрос, чем ...
Google является полезным инструментом, как правило, но ответ невероятно прост:
unsigned char a = 'A'
int b = a
char *a="40";
int i= a;
Значение в 'a' будет значение ASCII 40 (не будет 40).
Вместо попробуйте использовать функцию strtol(), определенный в stdlib.h
Только будьте осторожны, потому что эта функция является строкой. Он не будет работать для символа
Значение 'a' (и' i') * будет * be 40, так как это значение, которое вы только что назначили. –
Если вы проигнорируете предупреждение о компиляторе, вы обнаружите, что 'i' получает адрес, где хранится строка« 40 », что, конечно же, означает« a ». Ах, вернувшись к добрым дням до этой простой спецификации ANSI - назад, когда C был слабо типизирован, у программистов были более сильные умы, а Coca-Cola был сделан с настоящим сахаром! Ба! Дети в эти дни ..! Ба !! –
Вопрос был о unsigned char. Почему вы используете символ char *? – Aamir
Собственно, это неявный литой. Это означает, что ваше значение автоматически забрасывается, так как оно не переполняется или не переполняется.
Это пример:
unsigned char a = 'A';
doSomething(a); // Implicit cast
double b = 3.14;
doSomething((int)b); // Explicit cast neccesary!
void doSomething(int x)
{
...
}
Зачем вам нужен явный перевод для double-> int? Разве это не будет просто усекать неявно? – chris
Да, да, но вы получите предупреждение о компиляторе, поэтому рекомендуется это сделать. – bytecode77
Странно, я не получаю никаких предупреждений на самом высоком уровне GCC. – chris
Зависит от того, что вы хотите сделать:
прочитать значение как код ASCII, вы можете написать
char a = 'a';
int ia = (int)a;
/* note that the int cast is not necessary -- int ia = a would suffice */
для преобразования символ '0' -> 0, '1' -> 1 и т. д., вы можете написать
char a = '4';
int ia = a - '0';
/* check here if ia is bounded by 0 and 9 */
Попробуйте одно из следующих действий: оно работает для меня. Если вам требуется более конкретный отбор, вы можете проверить Boost's lexical_cast и reinterpret_cast.
unsigned char c = 40;
int i = static_cast<int>(c);
std::cout << i << std::endl;
или:
unsigned char c = 40;
int i = (int)(c);
std::cout << i << std::endl;
- 1. unsigned int to const char * in C
- 2. C - unsigned char * to char
- 3. unsigned char * to double in C++
- 4. Char to Int in C++?
- 5. C - unsigned int to unsigned char array преобразование
- 6. Unsigned Int to negative Int in Swift
- 7. int to unsigned char * и наоборот
- 8. Arduino unsigned long int to char *
- 9. C++ cast char * to unsigned char
- 10. Map char to int in Objective-C
- 11. C++ Num in char array to int
- 12. Void * to char или int in C
- 13. char array to int in C++
- 14. Unsigned char std :: vector to unsigned char []?
- 15. memcpy unsigned int to unsigned char segmentation fault
- 16. NSData to unsigned char *
- 17. unsigned int mysql in C#
- 18. unsigned char hex to int dec conversion C++
- 19. C++ int to char
- 20. Char to Int - C++
- 21. CAST unsigned to signed int in MySql
- 22. int и unsigned int in c
- 23. Typecast unsigned int to unsigned long int C++
- 24. Pass char * to const char * in c
- 25. C++ char array to int и int to char array
- 26. Преобразование int в unsigned char в C
- 27. сравнение между unsigned int и unsigned char
- 28. C++ char array copy to unsigned char array
- 29. упаковка unsigned char байтов в unsigned int в c
- 30. Unsigned Int to RGB Значение в C
если я пишу Е ("C:% х", с) я получаю 32. Тогда я пишу INT I = С и при печати "я" Я получаю 50 ! – user1346664
@ user1346664: '% x' печатает в шестнадцатеричном формате. 32 hex равен 50 десятичным. Вместо этого используйте '% d'. –
Так верно ... THankss – user1346664