2015-03-13 2 views
0

я получить код ASCII из полукокса, как это (с использованием C языка сайта):C: неверный символ для преобразования ASCII (символ из расширенной таблицы ASCII)

char * text = "5°"; 
int sizeText = strlen(text); 
int i = 0; 
float asciiCode; 
for(i=0; i<sizeText; i++) { 
    asciiCode = (GLfloat)text[i]; 
} 

Это хорошо работает для таблицы ASCII (символы число от 0 до 127), но оно не работает с символами из расширенной таблицы ASCII. Например, я получаю -62 от этого символа «°» (это должно быть 248).

Я попытался с несколькими кодирования, как UTF-8 и ISO 8859-1 (я использую Eclipse CDT кстати), я получил различный ASCII-код каждый раз, но не хороший:/

У вас есть любая идея, почему она не работает? Как я могу заставить его работать?

Спасибо.

+2

Как вы показываете значения? Почему вы назначаете код ASCII для 'float'? Если я делаю 'printf (« 5 ° »), он работает отлично. Проблема заключается в том, что вы присваиваете знак '248' (который эквивалентен -62 как номер) подписанному символу' float', который хранит его как '-62', и теперь это всего лишь номер. – lurker

+1

Вы не знаете, точно знаю, что «это должно быть 248». Подписанность «char» зависит от платформы. – Bathsheba

+0

Почему в аду вы использовали бы «графический тип», например, GLfloat для управления значениями символов, которые также являются целыми числами – Guiroux

ответ

0

Поскольку символ от -127 до 127. Вы не можете использовать расширенную таблицу ASCII, как это.

Я предлагаю вместо этого использовать wchar. Проверьте wchar.h и wctype.h руководство.

+0

Спасибо, чувак, он работает! – Epiliptik

0

Я думаю, ваша проблема в том, что assiiCode является поплавок, попробуйте объявить его как беззнаковое INT

Смежные вопросы