hi guys! how can i get the character value of this ascii code: 252,253 and 254? thanks in advance!!!
Printable View
hi guys! how can i get the character value of this ascii code: 252,253 and 254? thanks in advance!!!
Convert.ToChar(UnicodeValue)
For ASCII characters the Unicode value and ASCII value match, but Convert.ToChar can be used for non-ASCII characters too.
why i wont get the character for this ascii value. i have the snippet of my code below.
Code:MessageBox.Show(Convert.ToString(Convert.ToChar(130)));
Hmmm... I just did a bit of testing and it seems that there are some characters that Unicode and ASCII don't agree on. I used Convert.ToChar, ChrW and Chr to convert values from 1 to 255 in VB and here's the output:Note the section from 128 to 159. I then used Reflector to have a look at the implementation of Chr and here it is:Code:Value: ToChar ChrW Chr
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33: ! ! !
34: " " "
35: # # #
36: $ $ $
37: % % %
38: & & &
39: ' ' '
40: ( ( (
41: ) ) )
42: * * *
43: + + +
44: , , ,
45: - - -
46: . . .
47: / / /
48: 0 0 0
49: 1 1 1
50: 2 2 2
51: 3 3 3
52: 4 4 4
53: 5 5 5
54: 6 6 6
55: 7 7 7
56: 8 8 8
57: 9 9 9
58: : : :
59: ; ; ;
60: < < <
61: = = =
62: > > >
63: ? ? ?
64: @ @ @
65: A A A
66: B B B
67: C C C
68: D D D
69: E E E
70: F F F
71: G G G
72: H H H
73: I I I
74: J J J
75: K K K
76: L L L
77: M M M
78: N N N
79: O O O
80: P P P
81: Q Q Q
82: R R R
83: S S S
84: T T T
85: U U U
86: V V V
87: W W W
88: X X X
89: Y Y Y
90: Z Z Z
91: [ [ [
92: \ \ \
93: ] ] ]
94: ^ ^ ^
95: _ _ _
96: ` ` `
97: a a a
98: b b b
99: c c c
100: d d d
101: e e e
102: f f f
103: g g g
104: h h h
105: i i i
106: j j j
107: k k k
108: l l l
109: m m m
110: n n n
111: o o o
112: p p p
113: q q q
114: r r r
115: s s s
116: t t t
117: u u u
118: v v v
119: w w w
120: x x x
121: y y y
122: z z z
123: { { {
124: | | |
125: } } }
126: ~ ~ ~
127:
128: ? ? €
129:
130: ? ? ‚
131: ? ? ƒ
132: ? ? „
133: ? ? …
134: ? ? †
135: ? ? ‡
136: ? ? ˆ
137: ? ? ‰
138: ? ? Š
139: ? ? ‹
140: ? ? Œ
141:
142: ? ? Ž
143:
144:
145: ? ? ‘
146: ? ? ’
147: ? ? “
148: ? ? ”
149: ? ? •
150: ? ? –
151: ? ? —
152: ? ? ˜
153: ? ? ™
154: ? ? š
155: ? ? ›
156: ? ? œ
157:
158: ? ? ž
159: ? ? Ÿ
160:
161: ¡ ¡ ¡
162: ¢ ¢ ¢
163: £ £ £
164: ¤ ¤ ¤
165: ¥ ¥ ¥
166: ¦ ¦ ¦
167: § § §
168: ¨ ¨ ¨
169: © © ©
170: ª ª ª
171: « « «
172: ¬ ¬ ¬
173: * * *
174: ® ® ®
175: ¯ ¯ ¯
176: ° ° °
177: ± ± ±
178: ² ² ²
179: ³ ³ ³
180: ´ ´ ´
181: µ µ µ
182: ¶ ¶ ¶
183: · · ·
184: ¸ ¸ ¸
185: ¹ ¹ ¹
186: º º º
187: » » »
188: ¼ ¼ ¼
189: ½ ½ ½
190: ¾ ¾ ¾
191: ¿ ¿ ¿
192: À À À
193: Á Á Á
194: Â Â Â
195: Ã Ã Ã
196: Ä Ä Ä
197: Å Å Å
198: Æ Æ Æ
199: Ç Ç Ç
200: È È È
201: É É É
202: Ê Ê Ê
203: Ë Ë Ë
204: Ì Ì Ì
205: Í Í Í
206: Î Î Î
207: Ï Ï Ï
208: Ð Ð Ð
209: Ñ Ñ Ñ
210: Ò Ò Ò
211: Ó Ó Ó
212: Ô Ô Ô
213: Õ Õ Õ
214: Ö Ö Ö
215: × × ×
216: Ø Ø Ø
217: Ù Ù Ù
218: Ú Ú Ú
219: Û Û Û
220: Ü Ü Ü
221: Ý Ý Ý
222: Þ Þ Þ
223: ß ß ß
224: à à à
225: á á á
226: â â â
227: ã ã ã
228: ä ä ä
229: å å å
230: æ æ æ
231: ç ç ç
232: è è è
233: é é é
234: ê ê ê
235: ë ë ë
236: ì ì ì
237: í í í
238: î î î
239: ï ï ï
240: ð ð ð
241: ñ ñ ñ
242: ò ò ò
243: ó ó ó
244: ô ô ô
245: õ õ õ
246: ö ö ö
247: ÷ ÷ ÷
248: ø ø ø
249: ù ù ù
250: ú ú ú
251: û û û
252: ü ü ü
253: ý ý ý
254: þ þ þ
255: ÿ ÿ ÿ
Icky! I then thought that maybe an Encoding object could do the job, but this:VB Code:
Public Shared Function [Chr](ByVal CharCode As Integer) As Char Dim ch1 As Char If ((CharCode < -32768) OrElse (CharCode > 65535)) Then Throw New ArgumentException(Utils.GetResourceString("Argument_RangeTwoBytes1", New String() { "CharCode" })) End If If ((CharCode >= 0) AndAlso (CharCode <= 127)) Then Return Convert.ToChar(CharCode) End If Try Dim num1 As Integer Dim encoding1 As Encoding = Encoding.GetEncoding(Utils.GetLocaleCodePage) If (encoding1.IsSingleByte AndAlso ((CharCode < 0) OrElse (CharCode > 255))) Then Throw ExceptionUtils.VbMakeException(5) End If Dim chArray1 As Char() = New Char(2 - 1) {} Dim buffer1 As Byte() = New Byte(2 - 1) {} Dim decoder1 As Decoder = encoding1.GetDecoder If ((CharCode >= 0) AndAlso (CharCode <= 255)) Then buffer1(0) = CByte((CharCode And 255)) num1 = decoder1.GetChars(buffer1, 0, 1, chArray1, 0) Else buffer1(0) = CByte(((CharCode And 65280) >> 8)) buffer1(1) = CByte((CharCode And 255)) num1 = decoder1.GetChars(buffer1, 0, 2, chArray1, 0) End If ch1 = chArray1(0) Catch exception1 As Exception Throw exception1 End Try Return ch1 End Functiondidn't work either. I then tried this:VB Code:
MessageBox.Show(System.Text.Encoding.ASCII.GetString(New Byte() {130}))and it displayed the correct character. I don't know if that may change for different cultures or not but you can check that out if you like.VB Code:
MessageBox.Show(System.Text.Encoding.Default.GetString(New Byte() {130}))
How can i run the code below to C#.net? 'cuase I'm trying to run it in c#.net but it has an error.
By the way, Thanks a bunch!Code:MessageBox.Show(System.Text.Encoding.Default.GetString(New Byte() {130}))
Firstly you should look at the code to see what it is doing and then ask yourself how you would do that in C#. If you aren't able to make it work yourself then the next step is to use one of the code converters in my signature, or another if you have a favourite.
Thanks..I used your converters and its great!! how helpful it is! thanks soo much!!!
is there any better way than the code below to get the ascii code for a particular character?
Thanks in advance!Code:MessageBox.Show(Convert.ToInt16('ÿ').ToString());
That has the same issue as going the other way. If you use the code from before to create a Char object and then use that code to convert back to a number, you'll find that it doesn't round trip for that same range of characters while it does for the others. I guess you could use an Encoding object but I'll leave it up to you to experiment with that if you want.
Hi! i have i question. Since, the GetBytes encodes an array of character is there any way for me to just encode a single character? becuase i just want to encode a single character like '€' but GetBytes just wont allow me to do that or is just that i dont know yet. So, can anybody please help me. Thanks!
VB Code:
Encoding.Default.GetBytes(char[] chars)
Just create an array with one character in it. A string with one character in it will do the same job as GetBytes is overloaded.
hi! i really need help...I can already get the ascii code for some characters like 'A','-','=', etc. using the code below, but when i try to get the ascii for this 'š' character there is always an error saying "Value was either too large or too small for an unsigned byte." can anybody please help me on how to solve this problem.
Code:MessageBox.Show(Convert.ToString(Convert.ToByte('A'))); //OK
MessageBox.Show(Convert.ToString(Convert.ToByte('š'))); //ERROR
Only ASCII characters have ASCII codes. If the value you get from a character is to big for a Byte then that means that it is not an ASCII character, because ASCII characters have values fro 0 to 255. This character set is quite limited, which is basically why the Unicode character set was created. Unicode characters have a two-byte value, so from 0 to 65535, which allows an enormous number of characters from many languages and other symbols as well. The first 256 Unicode characters have the same value as the equivalent ASCII characters, so your first line is OK. The second line is trying to convert a Unicode character with a value greater than 255, which is obviously not going to fit in a variable with a maximum value of 255. If you're using Unicode characters then you should be using Short variables at least. Note that a .NET Char object is two bytes in size. Also, you can use the Encoding.Unicode object to get a byte array that represents a string of Unicode characters, where each character is converted to two bytes.
I've tried to get the the ascii code of this 'š' character using VB and i found out that it has a value of 154 which is in range (0-256) and is a ASCII character. Why is it can't fit to a byte?
Result:Code:Dim i As Integer
For i = 0 To 255
txtaddressee.Text = txtaddressee.Text & i & ": " & Chr(i) & Chr(13)
Next
Quote:
0: 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33: !
34: "
35: #
36: $
37: %
38: &
39: '
40: (
41: )
42: *
43: +
44: ,
45: -
46: .
47: /
48: 0
49: 1
50: 2
51: 3
52: 4
53: 5
54: 6
55: 7
56: 8
57: 9
58: :
59: ;
60: <
61: =
62: >
63: ?
64: @
65: A
66: B
67: C
68: D
69: E
70: F
71: G
72: H
73: I
74: J
75: K
76: L
77: M
78: N
79: O
80: P
81: Q
82: R
83: S
84: T
85: U
86: V
87: W
88: X
89: Y
90: Z
91: [
92: \
93: ]
94: ^
95: _
96: `
97: a
98: b
99: c
100: d
101: e
102: f
103: g
104: h
105: i
106: j
107: k
108: l
109: m
110: n
111: o
112: p
113: q
114: r
115: s
116: t
117: u
118: v
119: w
120: x
121: y
122: z
123: {
124: |
125: }
126: ~
127:
128: €
129:
130: ‚
131: ƒ
132: „
133: …
134: †
135: ‡
136: ˆ
137: ‰
138: Š
139: ‹
140: Œ
141:
142: Ž
143:
144:
145: ‘
146: ’
147: “
148: ”
149: •
150: –
151: —
152: ˜
153: ™
154: š
155: ›
156: œ
157:
158: ž
159: Ÿ
160: *
161: ¡
162: ¢
163: £
164: ¤
165: ¥
166: ¦
167: §
168: ¨
169: ©
170: ª
171: «
172: ¬
173: *
174: ®
175: ¯
176: °
177: ±
178: ²
179: ³
180: ´
181: µ
182: ¶
183: ·
184: ¸
185: ¹
186: º
187: »
188: ¼
189: ½
190: ¾
191: ¿
192: À
193: Á
194: Â
195: Ã
196: Ä
197: Å
198: Æ
199: Ç
200: È
201: É
202: Ê
203: Ë
204: Ì
205: Í
206: Î
207: Ï
208: Ð
209: Ñ
210: Ò
211: Ó
212: Ô
213: Õ
214: Ö
215: ×
216: Ø
217: Ù
218: Ú
219: Û
220: Ü
221: Ý
222: Þ
223: ß
224: à
225: á
226: â
227: ã
228: ä
229: å
230: æ
231: ç
232: è
233: é
234: ê
235: ë
236: ì
237: í
238: î
239: ï
240: ð
241: ñ
242: ò
243: ó
244: ô
245: õ
246: ö
247: ÷
248: ø
249: ù
250: ú
251: û
252: ü
253: ý
254: þ
255: ÿ
You're not learning from history. Remember a few posts ago when we determined that there was a lack of correspondence between ASCII and Unicode in the range 128 to 159? I'm pretty sure that 154 falls in that range. The Unicode value for that character is 353, which won't fit into a byte. I already alluded to this issue in post #9. You need to make a decision as to whether you're working with ASCII or Unicode and stick to it.That's what I implied in post #9.Quote:
MessageBox.Show(Convert.ToString(System.Text.Encoding.Default.GetBytes(new char[] { 'š' })[0]));
Thanks a bunch!!!I've already solved that problem with your help. But I still have a problem. Actually, im working with a simple encryption/decryption algorithm the could work both in C#.net and VB6, currently, i have the code below that try to ecnrypt whatever the text i pass to it. Now, my problem is i can't get the solution to decrypt it. can anybody please help me.
Code:private void button1_Click(object sender, EventArgs e)
{
string str, password, Encrypt_code, Decrypt_code;
str = @"abcdefghijklmnopqrstuvwxyz";
password = "BCMD";
Encrypt_code = RndCrypt(str, password, true);
txtSubject.Text = Encrypt_code;
Decrypt_code = RndCrypt(Encrypt_code, password, false);
txtAddressee.Text = Decrypt_code;
}
public string RndCrypt(string str, string password, Boolean Encrypt)
{
byte tmp_str, tmp;
byte[] string_bytes;
string encStr,tmp_encStr;
double key;
int counter;
key = 0;
counter = 1;
encStr = "";
Encoding ascii = Encoding.Default;
foreach (char i in password)
{
key += Convert.ToDouble(Convert.ToByte(i) * (counter * 2));
counter++;
}
key = key % 255;
counter = 1;
string_bytes = ascii.GetBytes(str);
foreach (byte b in string_bytes)
{
tmp = Convert.ToByte((key * counter) % 255);
if (Encrypt)
{
//encryption happens here
tmp_encStr = ascii.GetString(new byte[] { (Convert.ToByte(((tmp ^ b) % 222) + 33)) }).ToString();
}
else
{
//decryption happens here
//but i dont have yet the solution
}
encStr += tmp_encStr;
counter++;
}
return encStr;
}