перевод числа в текстовую строку

Тема в разделе "WASM.WIN32", создана пользователем test896, 12 май 2009.

  1. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    Всем привет!
    Знатоки подскажите есть ли функции API
    чтобы перевести число в строку, или что то связанное с этим.

    Цель вывести число в консоль на экран
     
  2. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    мож MSDN скачаешь?

    wsprintf(..)
    cprintf(..)/fprintf(..)
     
  3. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    А зачем тебе АПИ? Сам переведи! Пользы больше будет!
    Суть проста дели число на 10 бери остачу от деления и добавляй к ней 48 это будет код символа этот символ загоняй в начало строки, и так делаешь до тех пор, пока целая часть от деления не будет = 0
    вот типа так:
    i = 1234;//<<Число которое нужн перевести в строку;
    Код (Text):
    1. repeat
    2.    s := chr(i mod 10 + 48) + s;
    3.    i := i div 10;
    4. until (i div 10 = 0);
     
  4. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    itoa, есть даже в ntdll
     
  5. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    эт идея хорошая
    просто не хотел делить
     
  6. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    читаю, тяжело идет англ же, без примеров не очень понятно,
     
  7. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    В masm32\m32lib много примеров реализаций API
     
  8. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    Код (Text):
    1. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    2.  
    3.     .486                      ; force 32 bit code
    4.     .model flat, stdcall      ; memory model & calling convention
    5.     option casemap :none      ; case sensitive
    6.  
    7.     include \masm32\include\user32.inc
    8.  
    9.     ltoa PROTO :DWORD,:DWORD
    10.  
    11.     .code
    12.  
    13. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    14.  
    15. ltoa proc lValue:DWORD, lpBuffer:DWORD
    16.  
    17. comment * -------------------------------------------------------
    18.         convert signed 32 bit integer "lValue" to zero terminated
    19.         string and store string at address in "lpBuffer"
    20.         ------------------------------------------------------- *
    21.  
    22.     jmp @F
    23.     fMtStrinG db "%ld",0
    24.   @@:
    25.  
    26.     invoke wsprintf,lpBuffer,ADDR fMtStrinG,lValue
    27.     cmp eax, 3
    28.     jge @F
    29.     xor eax, eax    ; zero EAX on fail
    30.   @@:               ; else EAX contain count of bytes written
    31.  
    32.     ret
    33.  
    34. ltoa endp
    35.  
    36. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    37.  
    38. end
     
  9. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    mrcrown прав
    ... проще написать самому

    посмотрел статьи получилось , работает функция ,
    invoke wsprintfA, BUF, FORM, EAX

    посмотрел под отладчиком, такая ж-о,
    то игра со стеком, то or, и деление и умножение

    проще написать самому
     
  10. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    ну кудаж самому.
    лучше отдизасмить из win2k, вместе с комментариями ))))
    быстро и никакого вареза!

     
  11. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    deLight эт наверно Си
    я его не знаю