Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 3 из 3

Тема: itos

  1. #1
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,669
    Репутация:
    2145 ±

    itos

    Описание:
    Преобразуюет число в строку.

    Параметры:
    num - число, которое нужно преобразовать
    buffer - строковая переменная, в которую будет записан результат
    size - размер строковой переменной (необязательный параметр)

    Возвращаемое значение:
    Длина числа в строковом представлении.
    Также возвращает строковое представление числа в buffer.

    Плюсы реализации:
    • Функция проста в использовании
    • С использованием JIT работает до 13 раз быстрее, чем format
    • Нет багов которые есть в функциях valstr (зависание сервера при попытке вывода больших чисел) и format (вывод только знака "-" вместо "-2147483648")

    Минусы реализации:
    • N/A

    Код:
    PHP код:
    stock itos(numbuffer[], size=sizeof(buffer))
    // by Daniel_Cortez \\pro-pawn.ru
        
    new fix_cellmin = (num == cellmin) ? ++num 0;
        new 
    pos 0;
        if(
    num 0)
            
    buffer[0] = '-'pos++, num = -num;
        {
            new 
    num;
            do{
                
    /= 10;
                
    pos++;
            }while(
    x);
        }
        
    buffer[(--size<pos) ? size pos] = EOS;
        new 
    len = (size>pos) ? pos size;
        new 
    mod;
        do{
            
    /*if(--pos < size)
                buffer[pos] = '0'+num%10;
            num /= 10;*/
            // make 1 "sdiv" operation instead of 2
            #emit    load.s.pri    num
            #emit    const.alt    10
            #emit    sdiv
            #emit    stor.s.pri    num
            #emit    stor.s.alt    mod
            
    if(--pos size)
                
    buffer[pos] = '0'+mod;
        }while(
    num);
        if(
    fix_cellmin)
            
    buffer[10]++;
        return 
    len;

    Пример использования:
    PHP код:
    // Вывод имени игрока и его ID без использования format().
    // Пример результата: "Daniel_Cortez (0)".
    CMD:myname(playeridparams[])
    {
        new 
    string[MAX_PLAYER_NAME+2+11+1+1];
        new 
    len GetPlayerName(playeridstringsizeof(string);
        
    string[len++] = ' 'string[len++] = '(';
        
    len += itos(playeridstring[len], 12);
        
    string[len] = ')'string[len+1] = EOS;
        return 
    SendClientMessage(playerid, -1string);

    Автор: Daniel_Cortez
    Специально для Pro-Pawn.ru
    Копирование данной статьи на других порталах без разрешения автора запрещено!
    Последний раз редактировалось Daniel_Cortez; 09.05.2015 в 10:58. Причина: подогнал описание под новый шаблон
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  2. 4 пользователя(ей) сказали cпасибо:
    Airon007 (27.07.2013)Londlem (20.01.2014)Mike (27.07.2013)Osetin (27.07.2013)
  3. #2
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    Pro-Pawn.Ru
    Сообщений
    3,428
    Репутация:
    1079 ±
    Лови +,полезно

  4. #3
    Аватар для Mike
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.05.2013
    Адрес
    Москва
    Сообщений
    160
    Репутация:
    15 ±
    Спасибо)

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •