[問題] 將string轉成signed integer

看板C_and_CPP (C/C++)作者 (好gy銀行)時間14年前 (2012/05/24 18:52), 編輯推噓5(5019)
留言24則, 6人參與, 最新討論串1/1
我是用VC2010 用C來寫 問題: 假設我有一字串是"1100" (假設這樣:char str[5]="1100";) 我要把他轉成signed integer 結果應該是-4 小弟原本想用 ~ 做補數後再加1即可得值 但 ~ 好像不支援string的用法 想請教各位一下~~ 還是說有function會支援 可以直接轉? 不過小弟好像沒有找到 囧'' -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.105.109.185

05/24 19:00, , 1F
http://ppt.cc/!CxP C 沒有.除非事先做 signed extension.
05/24 19:00, 1F

05/24 19:00, , 2F
C++ 看有沒有人有經驗 (目前我所知也是沒有)
05/24 19:00, 2F

05/24 19:02, , 3F
不用什麼大大小小的事都靠現成的function吧XD
05/24 19:02, 3F

05/24 19:07, , 4F
不過這問題倒讓人有可思考空間~怎麼做才會快!
05/24 19:07, 4F

05/24 19:09, , 5F
明明10分鐘就能寫好的含數,卻要花1整天找現成的
05/24 19:09, 5F

05/24 19:11, , 6F
疑!原po該不會寫成 int x = ~( (string)"1100") + 1; 吧 ?
05/24 19:11, 6F

05/24 19:13, , 7F
< "但 ~ 好像不支援string的用法" 這句話看來像是這樣.. >
05/24 19:13, 7F

05/24 19:29, , 8F
是阿~我原本想法也是那樣XD
05/24 19:29, 8F

05/24 19:34, , 9F
while(*str!=0){x=x<<1+*str-1;str++;}
05/24 19:34, 9F

05/24 19:35, , 10F
while(*str!=0){x=x<<1+(*str-'0');str++;}
05/24 19:35, 10F

05/24 19:40, , 11F
s大漏了二點,signed bit,還有字串和一般習慣的msb是反的。
05/24 19:40, 11F

05/24 19:46, , 12F
啊啊,請問一下什麼msb相反
05/24 19:46, 12F

05/24 19:55, , 13F
就是,一般字串的 "0001", 那個 '1' 是在 [3], 算出來是 8,
05/24 19:55, 13F

05/24 19:56, , 14F
但一般 coder/user 轉換後想得到的是 1
05/24 19:56, 14F

05/24 20:02, , 15F
怎麼跟原PO的方向不一樣,崩潰~~~~~~~~~~~
05/24 20:02, 15F

05/24 20:04, , 16F
E大應該不是一般的 coder/user
05/24 20:04, 16F

05/24 20:04, , 17F
oh,原po的方向和一般的 strtod/strtol方向是一樣的.
05/24 20:04, 17F

05/24 20:07, , 18F
m.. 待原 po 補充方向性為何吧...
05/24 20:07, 18F

05/24 20:10, , 19F
方向性? 小弟還是新手 不知道那是啥 囧''
05/24 20:10, 19F

05/24 20:11, , 20F
不過我已經把1補數做出來了 這樣就沒甚麼問題了:)
05/24 20:11, 20F

05/24 21:01, , 21F
只能說連標準庫有什麼都不知道要找很久, 還是寫組語吧
05/24 21:01, 21F

05/24 21:18, , 22F
stringstream不能用嗎?
05/24 21:18, 22F

05/24 22:19, , 23F
!? 我現在在C++版嗎= =? ~是解構子的符號喔= =...
05/24 22:19, 23F

05/24 22:21, , 24F
= =!! 對不起= =" 邏輯運算符號OTZ 請忽略我
05/24 22:21, 24F
文章代碼(AID): #1FlXBaNK (C_and_CPP)
文章代碼(AID): #1FlXBaNK (C_and_CPP)