[問題] unsigned char轉成signed char的問題

看板C_and_CPP (C/C++)作者 (Zoxge)時間12年前 (2013/07/17 23:17), 編輯推噓2(2012)
留言14則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 問題(Question): 在公司寫code遇到的問題... 是C code,所以不能用C++的string @@ 1.從某個已經存在很久的function得到unsigned char的array (確定值只會是unsigned) 要處理array裡的值時,會用到strlen ( const char *str ); 但是strlen是收signed char 把unsigned char傳進去會出現warning 雖然值不會有問題,但是公司不允許有build code warning 2.需要做數字轉字串的動作 因此使用了sprintf(char *str, const char *format, ... ); 但sprintf的是存進signed char 但存進去的值必須再存進unsigned char (也是已經存在很久的code,不可以改) 同 1. 的問題,會有warning 請問遇到上面的問題,不能改原本已經存在的code 我是想乾脆自己定義 能收unsigned char的strlen 和 存進unsigned char的sprintf 但不知道這樣是不是好方法 @_@ 請問大家認為怎麼做會比較好呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.197.207

07/17 23:21, , 1F
strlen( (const char*)unsigned_byte_array) ; 不行嗎
07/17 23:21, 1F

07/17 23:22, , 2F
就直接硬轉型, 反正 terminate char. 表示都一樣.
07/17 23:22, 2F
※ 編輯: Zoxge 來自: 123.195.197.207 (07/17 23:31)

07/17 23:34, , 3F
還沒這樣試過..
07/17 23:34, 3F

07/17 23:34, , 4F
但我試過在餵進strlen前就先轉存..也是warning... = =
07/17 23:34, 4F

07/17 23:55, , 5F
unsigned char/signed char/char 不該被當作是一樣的
07/17 23:55, 5F

07/17 23:55, , 6F
用 memcpy 複製到另外一個陣列再說吧
07/17 23:55, 6F

07/18 00:30, , 7F
直接轉型~
07/18 00:30, 7F

07/18 00:51, , 8F
用 strlen() 來接 unsigned char* xD 體質本來就不好
07/18 00:51, 8F

07/18 01:37, , 9F
有沒有考慮自己實作一個吃unsigned char*的strlen XD
07/18 01:37, 9F

07/18 01:39, , 10F
原po有說想乾脆自己定義strlen啊 XD
07/18 01:39, 10F

07/18 01:47, , 11F
請問為何用strlen()接unsigned不好呢?
07/18 01:47, 11F

07/18 01:48, , 12F
請問要用memcpy copy到另一個array的原因是? 這樣就不會有
07/18 01:48, 12F

07/18 01:48, , 13F
signed與unsigned的問題嗎?
07/18 01:48, 13F

07/18 21:38, , 14F
手動寫一個strlen吧 一樣用0值判別字串結束?
07/18 21:38, 14F
文章代碼(AID): #1HvhMEXt (C_and_CPP)
文章代碼(AID): #1HvhMEXt (C_and_CPP)