XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Перевод из одной системы счисления в другую
Собственно кто-нибудь знает как перевести из 256cc в 10cc?
Старый 01.07.2008, 16:21
SliShad
†WOW Style†
offline
Опыт: 2,581
Активность:
если я правильно понимаю то в десятичной одна 1ед = 2,56ед(256сс)
Старый 01.07.2008, 16:34
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
SliShad, нет в десятичной 1ед = 1 ед, и еденица будет еденицей в любой системе счиления. в 256 ричной буковки, но их намного больше чем в 16
Старый 01.07.2008, 16:38
SliShad
†WOW Style†
offline
Опыт: 2,581
Активность:
Вот вроде перевод есть в систему с онованием 16
http://center.fio.ru/method/Resources/judina/10-04/uchebnik/1_intro/01_inform/060_chisl/03_move/index.html
Старый 01.07.2008, 16:46
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
SliShad, я и на бумажке умею производить данное вычисление
Старый 01.07.2008, 16:52
J
expert
offline
Опыт: 48,447
Активность:
я потратил целых полчаса чтобы написать этот код, но зато я проверил сам, и теперь можно с подобными вопросами посылать в эту тему...
ForInitializationMap() - запустить один раз при инициализации карты
DEC2ASCII(integer) and ASCII2DEC(string) - no comments
Код:
globals
    integer array Pow256x
    string  array CharMap
    integer array CharInx
endglobals

function S2Ix takes string s returns integer
    return s
    return 0
endfunction

function ForLoadMap takes nothing returns nothing
    set CharInx[S2Ix("!")] = 33
    set CharInx[S2Ix("#")] = 35
    set CharInx[S2Ix("$")] = 36
    set CharInx[S2Ix("%")] = 37
    set CharInx[S2Ix("&")] = 38
    set CharInx[S2Ix("'")] = 39
    set CharInx[S2Ix("(")] = 40
    set CharInx[S2Ix(")")] = 41
    set CharInx[S2Ix("*")] = 42
    set CharInx[S2Ix("+")] = 43
    set CharInx[S2Ix(",")] = 44
    set CharInx[S2Ix("-")] = 45
    set CharInx[S2Ix(".")] = 46
    set CharInx[S2Ix("/")] = 47
    set CharInx[S2Ix("0")] = 48
    set CharInx[S2Ix("1")] = 49
    set CharInx[S2Ix("2")] = 50
    set CharInx[S2Ix("3")] = 51
    set CharInx[S2Ix("4")] = 52
    set CharInx[S2Ix("5")] = 53
    set CharInx[S2Ix("6")] = 54
    set CharInx[S2Ix("7")] = 55
    set CharInx[S2Ix("8")] = 56
    set CharInx[S2Ix("9")] = 57
    set CharInx[S2Ix(":")] = 58
    set CharInx[S2Ix(";")] = 59
    set CharInx[S2Ix("<")] = 60
    set CharInx[S2Ix("=")] = 61
    set CharInx[S2Ix(">")] = 62
    set CharInx[S2Ix(".")] = 63
    set CharInx[S2Ix("@")] = 64
    set CharInx[S2Ix("A")] = 65
    set CharInx[S2Ix("B")] = 66
    set CharInx[S2Ix("C")] = 67 
    set CharInx[S2Ix("D")] = 68 
    set CharInx[S2Ix("E")] = 69 
    set CharInx[S2Ix("F")] = 70 
    set CharInx[S2Ix("G")] = 71 
    set CharInx[S2Ix("H")] = 72 
    set CharInx[S2Ix("I")] = 73 
    set CharInx[S2Ix("J")] = 74 
    set CharInx[S2Ix("K")] = 75 
    set CharInx[S2Ix("L")] = 76 
    set CharInx[S2Ix("M")] = 77 
    set CharInx[S2Ix("N")] = 78 
    set CharInx[S2Ix("O")] = 79 
    set CharInx[S2Ix("P")] = 80 
    set CharInx[S2Ix("Q")] = 81 
    set CharInx[S2Ix("R")] = 82 
    set CharInx[S2Ix("S")] = 83 
    set CharInx[S2Ix("T")] = 84 
    set CharInx[S2Ix("U")] = 85 
    set CharInx[S2Ix("V")] = 86 
    set CharInx[S2Ix("W")] = 87 
    set CharInx[S2Ix("X")] = 88  
    set CharInx[S2Ix("Y")] = 89  
    set CharInx[S2Ix("Z")] = 90  
    set CharInx[S2Ix("[")] = 91
    set CharInx[S2Ix("]")] = 93  
    set CharInx[S2Ix("^")] = 94  
    set CharInx[S2Ix("_")] = 95   
    set CharInx[S2Ix("`")] = 96   
    set CharInx[S2Ix("a")] = 97   
    set CharInx[S2Ix("b")] = 98   
    set CharInx[S2Ix("c")] = 99   
    set CharInx[S2Ix("d")] = 100  
    set CharInx[S2Ix("e")] = 101   
    set CharInx[S2Ix("f")] = 102   
    set CharInx[S2Ix("g")] = 103   
    set CharInx[S2Ix("h")] = 104   
    set CharInx[S2Ix("i")] = 105   
    set CharInx[S2Ix("j")] = 106   
    set CharInx[S2Ix("k")] = 107   
    set CharInx[S2Ix("l")] = 108   
    set CharInx[S2Ix("m")] = 109   
    set CharInx[S2Ix("n")] = 110   
    set CharInx[S2Ix("o")] = 111   
    set CharInx[S2Ix("p")] = 112   
    set CharInx[S2Ix("q")] = 113   
    set CharInx[S2Ix("r")] = 114   
    set CharInx[S2Ix("s")] = 115   
    set CharInx[S2Ix("t")] = 116    
    set CharInx[S2Ix("u")] = 117     
    set CharInx[S2Ix("v")] = 118     
    set CharInx[S2Ix("w")] = 119     
    set CharInx[S2Ix("x")] = 120     
    set CharInx[S2Ix("y")] = 121     
    set CharInx[S2Ix("z")] = 122     
    set CharInx[S2Ix("{")] = 123     
    set CharInx[S2Ix("|")] = 124     
    set CharInx[S2Ix("}")] = 125     
    set CharInx[S2Ix("~")] = 126
endfunction

function ForInitializationMap takes nothing returns nothing
    local trigger trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_LOADED)
    call TriggerAddAction( trig, function ForLoadMap)
    call ForLoadMap()
    set Pow256x[0] = 0x00000001
    set Pow256x[1] = 0x00000100
    set Pow256x[2] = 0x00010000
    set Pow256x[3] = 0x01000000
    set CharMap[33] = "!"
    set CharMap[35] = "#"
    set CharMap[36] = "$"
    set CharMap[37] = "%"
    set CharMap[38] = "&"
    set CharMap[39] = "'"
    set CharMap[40] = "("
    set CharMap[41] = ")"
    set CharMap[42] = "*"
    set CharMap[43] = "+"
    set CharMap[44] = ","
    set CharMap[45] = "-"
    set CharMap[46] = "."
    set CharMap[47] = "/"
    set CharMap[48] = "0"
    set CharMap[49] = "1"
    set CharMap[50] = "2"
    set CharMap[51] = "3"
    set CharMap[52] = "4"
    set CharMap[53] = "5"
    set CharMap[54] = "6"
    set CharMap[55] = "7"
    set CharMap[56] = "8"
    set CharMap[57] = "9"
    set CharMap[58] = ":"
    set CharMap[59] = ";"
    set CharMap[60] = "<"
    set CharMap[61] = "="
    set CharMap[62] = ">"
    set CharMap[63] = "."
    set CharMap[64] = "@"
    set CharMap[65] = "A"
    set CharMap[66] = "B"
    set CharMap[67] = "C"
    set CharMap[68] = "D"
    set CharMap[69] = "E" 
    set CharMap[70] = "F"
    set CharMap[71] = "G"
    set CharMap[72] = "H"
    set CharMap[73] = "I" 
    set CharMap[74] = "J"
    set CharMap[75] = "K" 
    set CharMap[76] = "L" 
    set CharMap[77] = "M" 
    set CharMap[78] = "N"
    set CharMap[79] = "O"
    set CharMap[80] = "P"
    set CharMap[81] = "Q"
    set CharMap[82] = "R"
    set CharMap[83] = "S"
    set CharMap[84] = "T"
    set CharMap[85] = "U" 
    set CharMap[86] = "V"
    set CharMap[87] = "W"
    set CharMap[88] = "X" 
    set CharMap[89] = "Y" 
    set CharMap[90] = "Z"
    set CharMap[91] = "["
    set CharMap[93] = "]" 
    set CharMap[94] = "^"
    set CharMap[95] = "_" 
    set CharMap[96] = "`" 
    set CharMap[97] = "a" 
    set CharMap[98] = "b" 
    set CharMap[99] = "c" 
    set CharMap[100] = "d"  
    set CharMap[101] = "e"
    set CharMap[102] = "f" 
    set CharMap[103] = "g"  
    set CharMap[104] = "h"   
    set CharMap[105] = "i" 
    set CharMap[106] = "j"  
    set CharMap[107] = "k"
    set CharMap[108] = "l"  
    set CharMap[109] = "m"
    set CharMap[110] = "n"
    set CharMap[111] = "o"
    set CharMap[112] = "p"
    set CharMap[113] = "q" 
    set CharMap[114] = "r" 
    set CharMap[115] = "s" 
    set CharMap[116] = "t"  
    set CharMap[117] = "u" 
    set CharMap[118] = "v"  
    set CharMap[119] = "w"
    set CharMap[120] = "x"
    set CharMap[121] = "y"
    set CharMap[122] = "z"
    set CharMap[123] = "{"  
    set CharMap[124] = "|"  
    set CharMap[125] = "}"  
    set CharMap[126] = "~"
    set trig = null
endfunction

function ASCII2DEC takes string num256 returns integer
    local integer num10 = 0
    local integer i = 0
    local integer len = StringLength(num256)
    loop
        exitwhen i >= len
        set num10 = num10 + CharInx[S2Ix(SubString(num256, i, i+1))] * Pow256x[len-i-1]
        set i = i + 1
    endloop
    return num10
endfunction

function DEC2ASCII takes integer num10 returns string
    local string num256 = ""
    local integer i = 3
    local integer CodeCh
    loop
        exitwhen i < 0
        set CodeCh = 0
        loop
            exitwhen num10 < Pow256x[i]
            set CodeCh = CodeCh + 1
            set num10 = num10 - Pow256x[i]
        endloop
        if CodeCh > 0 then
            set num256 = num256 + CharMap[CodeCh]
        endif
        set i = i - 1
    endloop
    return num256
endfunction

Отредактировано Jon, 01.07.2008 в 19:01.
Старый 01.07.2008, 18:56
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
О год... Спасибо большое, но если честно я просил сам принцип работы:)

Hellfim добавил:
А будет работать, если например переводить в десятичное число "asdf"?
И что за функция StringLength
Старый 01.07.2008, 19:15
J
expert
offline
Опыт: 48,447
Активность:
StringLength("hfsdfg") вернет 6 (длина строки)


будет хоть как работать, вот пример
Код:
call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, DEC2ASCII('~!ba'))
call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, "~!ba")

или
Код:
call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, I2S(ASCII2DEC("&%a#")))
call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, I2S('&%a#'))
Старый 01.07.2008, 19:20
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Jon, отлично, огромное спасибо!
Старый 01.07.2008, 19:22
J
expert
offline
Опыт: 48,447
Активность:
имей ввиду что не кажде десятичное число можно перевести в ASCII, я не проверял но помойму если перевод невозможен то теоретически выкинуть должно из игры, наверно....
Старый 01.07.2008, 19:25
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Мне нужно только обратно
Старый 01.07.2008, 19:28
ScorpioT1000
Работаем
online
Опыт: отключен
Лучше канешн юзать равкоды(если я понимаю цель применения автора)
Старый 01.07.2008, 19:29
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
ScorpioT1000, правильно понимаешь

Hellfim добавил:
просто очень заинтересовал вопрос о том как перевести из ASCII в десятичную систему(да простит меня Jon)
Старый 01.07.2008, 20:43
__Dark Lord__

offline
Опыт: 5,262
Активность:
Если вручную то если основание нужной нам сс меньше чем основание данной, то делим основание данной сс на нужное нам основание и записываем остатки от деления но в обратном порядке т.е начиная с конца. Для этого тебе конечно нужно знать алфавит сс.
А вообще лучше переводить уже по готовым таблицам так как алфавит у 256ричной сс вобщем то не маленький. Да и проще так.
Старый 02.07.2008, 09:36
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
__Dark Lord__, 256 символов:) Мб посоветуешь готовую таблицу?
Старый 02.07.2008, 19:36
J
expert
offline
Опыт: 48,447
Активность:
Старый 02.07.2008, 19:38
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Jon, большое спасибо, уже второй раз помогаешь!
Старый 02.07.2008, 19:57
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 22:35.