iT邦幫忙

0

C# char'1' to int'49' , Why!

c#
  • 分享至 

  • xImage

請教各位大師

 char[] arr = "1234".ToCharArray();
int a = Convert.ToInt32(arr[0]); 
Console.WriteLine("output : a = " + a);//output : a = 49
Double b = Char.GetNumericValue(arr[0]); 
Console.WriteLine("output : b = " + b);//output : b = 1

請問那的49到底是蝦咪!!!!!!!!

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2022-10-14 10:20:36 檢舉
ASCII code。
為甚麼會出來ASCII code阿~~
froce iT邦大師 1 級 ‧ 2022-10-14 11:08:41 檢舉
https://learn.microsoft.com/zh-tw/dotnet/api/system.convert.toint32?view=net-6.0#system-convert-toint32(system-char)

你前面把它轉成char,所以 Convert.ToInt32 接收到char,就會返回ASCII code。

要解析成1的話,請直接傳字串(string),不要傳char
equivalent 32-bit signed integer = 32 位元帶正負號的整數 = ASCII value
char '1' = ASCII value 49 //這個我有查到表
為什麼 string "1" = ASCII value 1
froce iT邦大師 1 級 ‧ 2022-10-14 13:49:59 檢舉
這個就要談到物件導向設計的多載,同樣一個 Convert.ToInt32 ,依據接收函數的型別不同,內部的實踐就不同。
https://learn.microsoft.com/zh-tw/dotnet/api/system.convert.toint32?view=net-6.0

並不是 string '1' 會等於ASCII 的value 1,而是 Convert.ToInt32 這個類方法,在設計者眼中,認為你輸入一個char,就該吐 ASCII code,輸入字串,就幫你轉換成整數1,這樣而已。
原來如此阿....
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2022-10-14 14:55:59
最佳解答

看一下ASCII 表

有一個重點
ASCII 碼是 for 而且 only for 文字
所以
A 的 ASCII 碼是 65 (這很清楚)
1 的 ASCII 碼是 49 (這個 1 是文字)

文字的1主要是用來顯示,不是拿來計算用的

ASCII 平常沒什麼人在注意
一直到最近 Mark Watney 才又讓他浮上檯面
/images/emoticon/emoticon33.gif

froce iT邦大師 1 級 ‧ 2022-10-14 15:32:17 檢舉

這片哪裡最近?XD

你說的對
嚴格說起來
Aries III 是 2035 年發射的
所以不能說「最近」
而是還沒發生
/images/emoticon/emoticon06.gif

我要發表回答

立即登入回答