System.Globalization.Bootstring.Encode C# (CSharp) Method

Encode() public method

public Encode ( string s, int offset ) : string
s string
offset int
return string
		public string Encode (string s, int offset)
		{
			int n = initial_n;
			int delta = 0;
			int bias = initial_bias;
			int b = 0, h = 0;
			StringBuilder sb = new StringBuilder ();
			for (int i = 0; i < s.Length; i++)
				if (s [i] < '\x80')
					sb.Append (s [i]);
			b = h = sb.Length;
			if (b > 0)
				sb.Append (delimiter);

			while (h < s.Length) {
				int m = int.MaxValue;
				for (int i = 0; i < s.Length; i++)
					if (s [i] >= n && s [i] < m)
						m = s [i];
				checked { delta += (m - n) * (h + 1); }
				n = m;
				for (int i = 0; i < s.Length; i++) {
					char c = s [i];
					if (c < n || c < '\x80')
						checked { delta++; }
					if (c == n) {
						int q = delta;
						for (int k = base_num; ;k += base_num) {
							int t =
								k <= bias + tmin ? tmin :
								k >= bias + tmax ? tmax :
								k - bias;
							if (q < t)
								break;
							sb.Append (EncodeDigit (t + (q - t) % (base_num - t)));
							q = (q - t) / (base_num - t);
						}
						sb.Append (EncodeDigit (q));
						bias = Adapt (delta, h + 1, h == b);
						delta = 0;
						h++;
					}
				}
				delta++;
				n++;
			}

			return sb.ToString ();
		}