рдордирдорд╛рдирд╛ рд▓рдВрдмрд╛рдИ (BaseN) рдХреЗ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдбреЗрдЯрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ

рд╣рд░ рдХреЛрдИ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЛ рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬрд╛рдирддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдгрдорд╛рд▓рд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдкреВрдВрдЫ рдХреЗ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд┐рд╕реНрдореЗрдВ рд╣реИрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдРрд╕реЗ рд╕рдВрд╢реЛрдзрди рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреА рд▓рдВрдмрд╛рдИ рджреЛ рдХреА рдЕрдиреНрдп рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 32, 16ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрд╢реЛрдзрди рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреА рд▓рдВрдмрд╛рдИ рджреЛ рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо base85 , base91 рд╣реИрдВ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдордирдорд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 256 рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд▓рдВрдмрд╛рдИ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдп рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрд╛ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред



рддреБрд░рдВрдд рд╕реНрд░реЛрдд рдкрд░ рд▓рд┐рдВрдХ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рдФрд░ js рдкрд░ рдбреЗрдореЛ рдХрд░реЗрдВ ред рдпрджреНрдпрдкрд┐ рд╡рд┐рдХрд╕рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЕрдзрд┐рдХ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдореВрд▓реНрдп рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рдордЭрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЫреЛрдЯреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдВрдмрд╛рдИ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд╡рд╛рдЗрди рдореЗрдВ)ред



рдХрд╕реНрдЯрдо рд╡рд░реНрдгрдорд╛рд▓рд╛


рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЖрдзрд╛рд░ рдмреЗрд╕ 85 рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИред рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЛ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмреНрд▓реЙрдХ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдЙрдЪреНрдЪ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде 32-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред 85 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╡рд┐рднрд╛рдЬрди рд╕реЗ, 85-рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ 5 рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рд╕реЗ рдореБрджреНрд░рд┐рдд рдкреНрд░рддреАрдХ, 85 рд╡рд░реНрдгреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдПрдиреНрдХреЛрдбреЗрдб рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ, рдСрд░реНрдбрд░ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд╕рд╛рде, рдЙрдЪреНрдЪрддрдо рдХреНрд░рдо рд╕реЗ рдирд┐рдореНрдирддрдо рддрдХред



рд▓реЗрдХрд┐рди 4 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЖрдХрд╛рд░ рдХреНрдпреЛрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреНред 32 рдмрд┐рдЯреНрд╕? рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрд╖реНрдЯрддрдо рд╕рдВрдкреАрдбрд╝рди рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдмрд┐рдЯреНрд╕ рдХреА рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ (2 ^ 32 = 4294967296) рдЕрдзрд┐рдХрддрдо рд╡рд░реНрдгреЛрдВ (85 ^ 5 = 4437053125) рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдгрдорд╛рд▓рд╛ рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдЧрдгрд┐рддреАрдп рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕ рдкрд░ рд╕рдВрдкреАрдбрд╝рди рдЕрдзрд┐рдХрддрдо рд╣реЛрдЧрд╛:



a рд╡рд░реНрдгрдорд╛рд▓рд╛ A рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ ред

k рдПрдиреНрдХреЛрдбреЗрдб рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред

b - рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЖрдзрд╛рд░ред

n рд╡рд░реНрдгрдорд╛рд▓рд╛ A рдХреЗ k рд╡рд░реНрдгреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА b рдореЗрдВ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ ред

рдЖрд░ рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд (рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░) рд╣реИред

mbc рдмрд┐рдЯреНрд╕ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рд╣реИред



тМКX (x (рддрд▓) рд╕реЗ рдХрдо рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИред

тМИX x x (рдЫрдд) рд╕реЗ рдмрдбрд╝рд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИред



рдЖрдЧреЗ, рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдмрд┐рдЯреНрд╕ рдФрд░ рд╡рд░реНрдгреЛрдВ рдХреЗ рдЗрд╖реНрдЯрддрдо рд╕рдВрдпреЛрдЬрди рдкрд╛рдП рдЧрдП, рдЬреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд░реНрд╢рд╛рдП рдЧрдП рдереЗред рдЕрдзрд┐рдХрддрдо рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ 64 рдмрд┐рдЯреНрд╕ рд╣реИ (рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд рд╣рдореЗрд╢рд╛ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдмрдврд╝рддрд╛ рд╣реИ (рдпрд╣ 60 рдФрд░ 91 рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рд▓рд╛рд▓ рдкрдЯреНрдЯрд┐рдпрд╛рдБ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (85 рдФрд░ 91) рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИрдВред рджрд░рдЕрд╕рд▓, рдЖрд░реЗрдЦ рд╕реЗ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдИ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рд╡реНрдпрд░реНрде рдирд╣реАрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдиреНрдпреВрдирддрдо рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд рдХреЗ рд╕рд╛рде рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрддрдо рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдЖрд░реЗрдЦ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 64 рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде base85 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ 32 рдмрд┐рдЯреНрд╕ рд╣реЛрдЧрд╛, рдФрд░ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 1.25 рдХреЗ рдЕрддрд┐рд░реЗрдХ рдХреЗ рд╕рд╛рде 5 рд╣реЛрдЧреАред рдЕрдзрд┐рдХрддрдо рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ 256 рдмрд┐рдЯреНрд╕ рддрдХ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмреНрд▓реЙрдХ рдХрд╛ рдЖрдХрд╛рд░ 22 рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде 141 рдмрд┐рдЯ рдФрд░ 1.2482 рдХрд╛ рдЕрддрд┐рд░реЗрдХ) рд╣реЛрдЧрд╛ред







рдХреЛрдбрд┐рдВрдЧ рдХрджрдо


рддреЛ, рдЪрд░рдгреЛрдВ рдореЗрдВ, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  1. рдЗрд╖реНрдЯрддрдо рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ (рдмрд┐рдЯреНрд╕ рдПрди рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреА рдЧрдгрдирд╛ рдФрд░ рдЗрд╕рдХреЗ рдЕрдиреБрд░реВрдк рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ ( рдХреЗ )ред
  2. рд╕реНрд░реЛрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдПрдХ рдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ (UTF8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред
  3. N рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдореВрд▓ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ред
  4. рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдмрд┐рдЯреНрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓реЗрдВред
  5. рдкреВрдВрдЫ рдмрд┐рдЯреНрд╕ рдХреА рдорд┐рд╕рдЕрд▓рд╛рдЙрдВрд╕рд┐рдВрдЧред


рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред рджреВрд╕рд░реЗ рдЪрд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдХреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╕реА # рдореЗрдВ рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд Encoding.UTF8.GetBytes () рдореЗрдВ рд╣реИ , рдФрд░ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ strToUt8Bytes рдФрд░ bytesToUtf8Str рджреНрд╡рд╛рд░рд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛)ред рдЕрдЧрд▓рд╛, рдЕрдЧрд▓реЗ рддреАрди рдЪрд░рдгреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд░реНрдгреЛрдВ рдХреЗ рдПрдХ рдХреНрд░рдо рдХреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдЙрд▓рдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИред

рдмрд┐рдЯ рдмреНрд▓реЙрдХ рдПрдирдХреЛрдбрд┐рдВрдЧ


private void EncodeBlock(byte[] src, char[] dst, int ind) { int charInd = ind * BlockCharsCount; int bitInd = ind * BlockBitsCount; BigInteger bits = GetBitsN(src, bitInd, BlockBitsCount); BitsToChars(dst, charInd, (int)BlockCharsCount, bits); } private void DecodeBlock(string src, byte[] dst, int ind) { int charInd = ind * BlockCharsCount; int bitInd = ind * BlockBitsCount; BigInteger bits = CharsToBits(src, charInd, (int)BlockCharsCount); AddBitsN(dst, bits, bitInd, BlockBitsCount); }
      
      







GetBitsN рдмреНрд▓реЙрдХрдмрд┐рдЯреНрд╕ рдмрд┐рдЯ рдХреА рдПрдХ рд▓рдВрдмреА рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдмрд┐рдЯ рдмрд┐рдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

AddBitsN рд╕реНрдерд┐рддрд┐ рдмрд┐рдЯ рдореЗрдВ dst рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдмрд┐рдЯреНрд╕ рдмрд┐рдЯ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ ред



рдордирдорд╛рдиреЗ рдЖрдзрд╛рд░ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрд┐рдЯреНрд╕ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛


рд╡рд░реНрдгрдорд╛рд▓рд╛ рдПрдХ рдордирдорд╛рдирд╛ рд╡рд░реНрдгрдорд╛рд▓рд╛ рд╣реИред рдЙрд▓рдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╡реНрдпреБрддреНрдХреНрд░рдо рд╡рд░реНрдгрдорд╛рд▓рд╛ InvAlphabet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреЗрд╕ 64 рдХреЗ рд▓рд┐рдП, рдмрд┐рдЯреНрд╕ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмреЗрд╕ 85 рдХреЗ рд▓рд┐рдП, рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( ReverseOrder ), _powN рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреА рд▓рдВрдмрд╛рдИ рд╣реИред



 private void BitsToChars(char[] chars, int ind, int count, BigInteger block) { for (int i = 0; i < count; i++) { chars[ind + (!ReverseOrder ? i : count - 1 - i)] = Alphabet[(int)(block % CharsCount)]; block /= CharsCount; } } private BigInteger CharsToBits(string data, int ind, int count) { BigInteger result = 0; for (int i = 0; i < count; i++) result += InvAlphabet[data[ind + (!ReverseOrder ? i : count - 1 - i)]] * _powN[BlockCharsCount - 1 - i]; return result; }
      
      







рдЯреЗрд▓ рдмрд┐рдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдВрдд рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдореБрдЦреНрдп рдФрд░ рдкреВрдВрдЫ рдХреЗ рдмрд┐рдЯреНрд╕ рдФрд░ рдкрд╛рддреНрд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛, рдЬрд┐рд╕рд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ред







рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдмрд┐рдЯреНрд╕ рдФрд░ рдкреНрд░рддреАрдХреЛрдВ рдХреА рдореБрдЦреНрдп рдФрд░ рдкреВрдВрдЫ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ред


 int mainBitsLength = (data.Length * 8 / BlockBitsCount) * BlockBitsCount; int tailBitsLength = data.Length * 8 - mainBitsLength; int globalBitsLength = mainBitsLength + tailBitsLength; int mainCharsCount = mainBitsLength * BlockCharsCount / BlockBitsCount; int tailCharsCount = (tailBitsLength * BlockCharsCount + BlockBitsCount - 1) / BlockBitsCount; int globalCharsCount = mainCharsCount + tailCharsCount; int iterationCount = mainCharsCount / BlockCharsCount;
      
      







рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдмрд┐рдЯреНрд╕ рдФрд░ рдкреНрд░рддреАрдХреЛрдВ рдХреА рдореБрдЦреНрдп рдФрд░ рдкреВрдВрдЫ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ред


 int globalBitsLength = ((data.Length - 1) * BlockBitsCount / BlockCharsCount + 8) / 8 * 8; int mainBitsLength = globalBitsLength / BlockBitsCount * BlockBitsCount; int tailBitsLength = globalBitsLength - mainBitsLength; int mainCharsCount = mainBitsLength * BlockCharsCount / BlockBitsCount; int tailCharsCount = (tailBitsLength * BlockCharsCount + BlockBitsCount - 1) / BlockBitsCount; BigInteger tailBits = CharsToBits(data, mainCharsCount, tailCharsCount); if (tailBits >> tailBitsLength != 0) { globalBitsLength += 8; mainBitsLength = globalBitsLength / BlockBitsCount * BlockBitsCount; tailBitsLength = globalBitsLength - mainBitsLength; mainCharsCount = mainBitsLength * BlockCharsCount / BlockBitsCount; tailCharsCount = (tailBitsLength * BlockCharsCount + BlockBitsCount - 1) / BlockBitsCount; } int iterationCount = mainCharsCount / BlockCharsCount;
      
      







рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдореИрдВрдиреЗ рдЗрд╕ рдХрд▓рди рд╡рд┐рдзрд┐ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, jsbn рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: kvanttt.github.io/BaseNcoding



рдирд┐рд╖реНрдХрд░реНрд╖


рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ (C # рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ) GPU рд╕рд╣рд┐рдд рд╕рдорд╛рдВрддрд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПред рд╡реИрд╕реЗ, C # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ GPU рдХреЗ рд▓рд┐рдП рдмреЗрд╕ 64 рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдпрд╣рд╛рдБ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: рдмреЗрд╕ 64 рдПрдирдХреЛрдбрд┐рдВрдЧ рдПрдХ рдЬреАрдкреАрдпреВ рдкрд░ ред



рд╡рд┐рдХрд╕рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рд╢реБрджреНрдзрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдмреЗрд╕ 32, рдмреЗрд╕ 64, рдмреЗрд╕ 85 рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд░реНрдгреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдкреВрдВрдЫ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рдорд╛рди рдереЗ)ред



All Articles