Первое замечание, касающееся вашего кода без учета проблемы, заключается в том, почему вы хорошо справляетесь с делом 0..9, но отделяете дела A и B ... и F вместо того, чтобы делать то же самое, что вы делаете для цифра?
так
int hexConversion(int num){
char hex_buffer[9];
unsigned int mask = 4026531840;
for(int i = 0; i < 9; i++){
int temp = mask & num;
if(temp < 10){
hex_buffer[i] = temp + '0';
}
else if (temp < 16) {
hex_buffer[i] = temp - 10 + 'A';
}
else {
hex_buffer[i] = '?';
}
mask >>= 4;
}
hex_buffer[8] = '\0';
for(int i = 0; i < sizeof(hex_buffer); i++){
printf("%c", hex_buffer[i]);
}
}
Я добавил тест if (temp < 16)
, обычно бесполезный, если код правильный, но результат:
Компиляция и выполнение:
pi@raspberrypi:/tmp $ gcc -g -pedantic -Wextra h.c
h.c: In function ‘hexConversion’:
h.c:23:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < sizeof(hex_buffer); i++){
^
pi@raspberrypi:/tmp $ ./a.out
00000002000000?F0??????F???????F000000000??????F
, поэтому в вашем решении вы не пишете по некоторым индексам из-за ошибки в вашем коде
Один из способов сделать это:
void hexConversion(int num){
char hex_buffer[9];
for(size_t i = 0; i < sizeof(hex_buffer) -1; i++){
int temp = (num >> (28-4*i)) & 0xf;
if(temp < 10){
hex_buffer[i] = temp + '0';
}
else {
hex_buffer[i] = temp - 10 + 'A';
}
}
hex_buffer[8] = 0;
puts(hex_buffer);
}
Компиляция и выполнение:
pi@raspberrypi:/tmp $ gcc -g -pedantic -Wextra h.c
pi@raspberrypi:/tmp $ ./a.out
00000002
000000FF
FFFFFFFF
7FFFFFFF
80000000
DEADBEEF
Обратите внимание, что ваш код предполагает, что int на 32b не зависит от размера (но предположим, что char на 8 битах): [1115 ]
void hexConversion(int num){
char hex_buffer[sizeof(int)*2 + 1];
for(size_t i = 0; i < sizeof(int)*2; i++){
int temp = (num >> (sizeof(int)*8-4-4*i)) & 0xf;
if(temp < 10){
hex_buffer[i] = temp + '0';
}
else {
hex_buffer[i] = temp - 10 + 'A';
}
}
hex_buffer[sizeof(int)*2] = 0;
puts(hex_buffer);
}
я перестал работать, если пользователь не мог бы узнать, что сделать от UI? В противном случае, какую степень справки я должен обеспечить? (и для настольного приложения и для веб-приложения)
Они должны быть в состоянии использовать Ваше Ваше приложение, чтобы сделать основные вещи от UI. например, скажите для редактора изображений, они должны быть в состоянии создать новое изображение, и проводить некоторые линии тогда сохраняют его только путем рассмотрения UI.
Это лучше всего сделано следующими общими разметками (как наличие нового, открытого, и сохраните под файлом в строке меню, и использование стандарта открывает и сохраняет диалоговые окна).
то же идет для веб-приложений, люди exspect, чтобы быть в состоянии сделать, основной материал, не имея необходимость читать документы, но для большего количества людей расширенных функций все еще прочитает документы. (например, большинство вскипает, будет читать, в документах для говорится код BB или скидка с цены, по крайней мере, иногда, но они ожидают быть в состоянии отправить, не имея необходимость знать их)
справочные файлы, руководства пользователя и контекстно-зависимая справка онлайн с ключевыми мертвыми F1?
у Них все еще есть свое место. Люди будут использовать их для приобретения знаний о том, как лучше всего использовать различные функции, например, скидка с цены или bbcode, или как использовать фильтры для получения определенных эффектов в редакторе изображений.
, Конечно, существует все еще много приложений, даже приложений онлайн, разработанных с тупыми интерфейсами и крошечным небольшим значком справки в углу где-нибудь, по-видимому, надеясь, что последний смягчает первого. Пожалейте их.
Никакой путь. Вы смотрите на сумму документации и обучения и маркетинговых расходов, даже MS поднимает.. Вы получите свой ответ. Попытайтесь использовать чужой продукт, и Вы изучите истинное значение документации - я изучаю Godiagrams прямо сейчас..:)
, Таким образом, я могу сказать без сомнения.. НЕ и это никогда не будет.. неважно, как интуитивные пользовательские интерфейсы добираются.. вне определенного размера Вы будете нуждаться в помощи и обучение. , Но путем понимания пользователя и что он должен быть сделан, Вы могли разработать его таким образом, что время, он должен изучить систему, чтобы сделать его стандартные задачи, минимально.
Я включал контекстно-зависимые экранные демонстрации в свои приложения. Я нашел, что это помогает нетехническим пользователям схватить приложение быстро, не прося живую справку.
Книги Идиота/Макета должны вполне успевать. Вообразите, была ли стандартная справка приложения так же хороша как те книги. Стандартная справка F1 для большого количества приложений просто ужасна.
Действительно ли справка мертва? Нет, но часть его должна быть вынута и застрелена.