[c#] вопрос по переводу кода в символ

tutul9

   public uint XSmodR(uint x, uint s, uint r)
{
bool[] sb = ToBinary(s);
int index = 0;
int n = sb.Length;
uint a = 1;
if (sb[index++])
a = x;
uint y = x;
while (index < n)
{
y = (y * y) % r;
if (sb[index])
a = (a * y) % r;
index++;
}

private void button3_Click(object sender, EventArgs e)
{
string shifrstr=richTextBox1.Text;
ArrayList shifr = new ArrayList;
string[] shifrstrar = shifrstr.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries);
for (int i=0; i < shifrstrar.Length; i++)
{
shifr.Add(uint.Parse(shifrstrar[i];
}
string str = "";
foreach (uint c in shifr)
{
uint x = XSmodR(c, d, n);

str = str+" " + Convert.ToString(x)+"=" +(char)x;
}
richTextBox2.Text = str;
label7.Text = Convert.ToString(n);
}

вопрос, как тут перевести код символа, в собственно символ. х принемает довольно часто большие значения (больше 5000 и поэтому заместо нормальных букв очень часто появляются разные иероглифы. может тут можно как-нибудь изменить кодировку (или как там это называется) с unicode на ASCII?

SPARTAK3959

А с каких это пор иероглифы перестали быть символами? Хочешь ascii - делай (charx&0x7F) или другое преобразование с потерей информации, которое тебе нравится.

tutul9

ну я имел ввиду что мне нужна латинница и кириллица, а иероглифы ни в одно место не вьелись.
делай (charx&0x7F)

а шо это за зверь такой? Оо

agaaaa

Encoding.Default.GetBytes

tutul9

че то не выходит, может я че то не то далаю?
  public byte[] deshifr(uint x)
{
string a = "";
a = Convert.ToString(x);
char[] b = new char[a.Length];
int i = 0;
foreach (char c in a)
{
b[i++] = c;
}
byte[] k = Encoding.Default.GetBytes(b);
return k;
}

зы если че, просьба не ржать, ибо я нуб.

Dasar

ну я имел ввиду что мне нужна латинница и кириллица, а иероглифы ни в одно место не вьелись.
а коды тебе зачем для этого?
чем не устраивает решение в лоб?

var text = "x$";

var filteredText = new string(text.Where(ch =>
'a' <= ch && ch <= 'z'
|| 'A' <= ch && ch <= 'Z'
|| 'а' <= ch && ch <= 'я'
|| 'А' <= ch && ch <= 'Я')
.ToArray;
Console.WriteLine(filteredText);

kokoc88

код символа, в собственно символ
В C# в Win32 char задаётся в кодировке UTF16-LE
Если ты получаешь значения больше 255 в переменной x, ты не сможешь перевести эти значения в ASCII. Это означает, что либо XSmodR работает неправильно, либо закодированы не ASCII значения.

Dasar

может тут можно как-нибудь изменить кодировку (или как там это называется) с unicode на ASCII?
можно попробовать так (будет без русских):
Encoding.Ascii.GetString(new byte[]{x}, 0, 1)
или так (будет с русскими)
Encoding.GetEncoding(1251).GetString(new byte[]{x}, 0, 1)

tutul9

о горе мне :( так тоже не получается :(
ps решение "в лоб" не пройдет, потому что тогда потеряется практически весь текст :(

kokoc88

так тоже не получается
Ты напиши, какую задачу решаешь. Что является входными данными и выходными.

tutul9

блин, тупанул, нашел пару очепяток из-за этого ничего не получалось :)
Оставить комментарий
Имя или ник:
Комментарий: