討論區快速選單
知識庫快速選單
下載Alexa Toolbar讓你上網更有趣 Top1安全軟體開發知識-CSSLP
[ 回上頁 ] [ 討論區發言規則 ]
16進制轉2進制
更改我的閱讀文章字型大小
作者 : jose(強強)
[ 貼文 102 | 人氣 8899 | 評價 0 | 評價/貼文 0 | 送出評價 35 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/11/10 下午 02:54:56
char ss[9];
long Bit16=69;
itoa(Bit16,ss,2);
ss的結果是1011001
我想讓ss的值為01011001
也就是說為零的不想空白,假設今天Bit16=1,那ss應該是00000001,請問要怎麼才能做到呢?
作者 : jose(強強)
[ 貼文 102 | 人氣 8899 | 評價 0 | 評價/貼文 0 | 送出評價 35 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/11/10 下午 03:59:43
解決了..OK..用sprintf
我好像常常自問自答,不過要是有遇到相同問題可以一起討論,還是我太笨了,沒人要理偶QQ
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++曠世奇才新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4755 | 人氣 9172 | 評價 31210 | 評價/貼文 6.56 | 送出評價 138 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jose註記此篇回應為很有道理 2005/11/10 下午 10:19:26
>char ss[9];

8 個空位不夠放 long. 正確的寫法是:

  char ss[sizeof(unsigned long) * CHAR_BIT+1];

CHAR_BIT 需要 <limits.h>


>long Bit16=69;

負數的 binary representation 視系統而定. 應該用 unsigned long.


>itoa(Bit16,ss,2);

itoa() 不是一個標準的函式. 讓你自己想想不用 library function 該怎麼做.


>ss的結果是1011001
>我想讓ss的值為01011001
>也就是說為零的不想空白,假設今天Bit16=1,那ss應該是00000001,請問要怎麼才能做到呢?

可以預先把 'ss' 全設為 '0', 或轉換/儲存後把剩餘的位子設為 '0'.

作者 : hivc(颭)
[ 貼文 92 | 人氣 8472 | 評價 310 | 評價/貼文 3.37 | 送出評價 26 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/11/11 上午 09:37:34
>  char ss[sizeof(unsigned long) * CHAR_BIT+1];
請教這一行為什麼算出佔用大小後不是用除的而是用乘的?
謝謝
作者 : sigma033(sigma)
[ 貼文 2 | 人氣 1 | 評價 20 | 評價/貼文 10 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jose註記此篇回應為很有道理 2005/11/11 上午 10:30:30
function _itoa() 會將輸入數字依據要求的進位表示法用字串表示出來,

這表示當用2進位表示法時,每個 bit 會用到一個 byte 儲存

所以用 function sizeof 算出 byte 大小之後 還需換算出 bit 總數

再根據 bit 總數分配最多可能使用到的 byte 容量.
作者 : johnny6740(牧童哥) VC++優秀好手驅動程式優秀好手Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 791 | 人氣 24021 | 評價 3770 | 評價/貼文 4.77 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jose註記此篇回應為很有道理 2005/11/11 上午 10:32:10
sizeof(unsigned long) 是用來取出 unsinged long 的長度,單位為 byte
而 CHAR_BIT 是 char 所佔的 bit 數,一個 char 佔 1 byte
所以相乘的結果就是 unsigned long 所佔用的 bit 數
最後加 1 是為了放字串的結束字元 null
作者 : jose(強強)
[ 貼文 102 | 人氣 8899 | 評價 0 | 評價/貼文 0 | 送出評價 35 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/11/11 上午 10:49:47
>long Bit16=69;
>負數的 binary representation 視系統而定. 應該用 unsigned long.
所以會因為不同系統(例WIN98及WIN2000的不同)而不同囉?

>itoa(Bit16,ss,2);
>itoa() 不是一個標準的函式. 讓你自己想想不用 library function 該怎麼做.
是轉十進制再轉二進制嗎?

>可以預先把 'ss' 全設為 '0', 或轉換/儲存後把剩餘的位子設為 '0'.
char ss[9]={'0'};
這樣寫對嗎?@@
作者 : hivc(颭)
[ 貼文 92 | 人氣 8472 | 評價 310 | 評價/貼文 3.37 | 送出評價 26 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/11/11 上午 10:51:29
講解得非常清楚謝謝各位
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++曠世奇才新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4755 | 人氣 9172 | 評價 31210 | 評價/貼文 6.56 | 送出評價 138 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jose註記此篇回應為最佳解答 2005/11/11 下午 10:09:16
>>long Bit16=69;
>>負數的 binary representation 視系統而定. 應該用 unsigned long.
>所以會因為不同系統(例WIN98及WIN2000的不同)而不同囉?

Binary representation 跟硬件比較有關, 所以這裡的 '系統' 指的 是 processor architecture.


>>itoa(Bit16,ss,2);
>>itoa() 不是一個標準的函式. 讓你自己想想不用 library function 該怎麼做.
>是轉十進制再轉二進制嗎?

對 compiler 來說, 所有的數字都是用二進制來存. 所謂的八, 十, 或十六進制, 是為了方便 "人" 讀而輸出的型式.

給你一些提示:

你所要做的, 就是找出 unsigned long 裡, 每一個 bit 的值. 如果該 bit 為零, 就把 'ss' 裡相關的位子的字元設為 '0'. 如果該 bit 為壹, 就把 'ss' 裡相關的位子的字元設為 '1':

   unsigned long
  +=========...=========+
  | | | | | ... | 0 | 1 |
  +=========...=========+
                  |   |
   ss             ↓   ↓
  +=========...=========+
  | | | | | ... |‘0’|‘1’|
  +=========...=========+


>>可以預先把 'ss' 全設為 '0', 或轉換/儲存後把剩餘的位子設為 '0'.
>char ss[9]={'0'};
>這樣寫對嗎?@@

不好意思, 我沒寫清楚. 應該是設為零. 數目 0 在 C 用字元的型式來寫是 '\0'.

所以應該是這樣:
  char ss[9] = {0};

在 C 裡, '{' 跟 '}' 是用來設 array 宣告時的初始值. 如果初始值的數目少過 array 的大小, 其餘的 elements 的會自動設為 0. 所以:

  int iAry[10] = { 1 };

只會把 iAry[0] 設為 1, 其餘的 (iAry[1] 到 [9]) 全設為 0.

但因為 {} 裡不能空, 所以要放至少一個值.

 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11000 
2 Raymond 9860 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1790 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.171875