八進制轉二進制…
50個字串中…
每字串有63個0~7隨機的數字...
我想將每個bit轉成3bit的0、1表示...
且宣告的型態為int…
將轉完的0、1值存入63*3大小的陣列...
想請教好心大大可以指點我一下…
怎樣用c語言來表示此程式…
感謝…
例如:
1==>0265473254.... 轉完後為==>000010110101100111011010101100....
2==>0261113254.... 轉完後為==>000010110001....................
3==>0265473254.... 轉完後為==>000010110101....................
4==>0265000054.... 轉完後為==>000010110101....................
5==>0265473254.... 轉完後為==>000010110101....................
.... . .
.... . .
.... . .
.... . .
50==>564643254.... 轉完後為==>101011100110100011010101100..........
2007-12-13 09:42:59 · 3 個解答 · 發問者 沁 2 in 電腦與網際網路 ➔ 程式設計
to逃跑的青蛙 ...
我是因為要寫ga的程式魯…
所以才問這些問題的>"<
因為編碼的問題我一直搞不懂…
且此程式也拖了很久魯…
想趕快將它完成魯…
因我的腦袋轉的不快…所以才會一直反覆問這些問題…歹勢丫
2007-12-14 03:33:14 · update #1
to Jacob Lee...
for (i=0; i<50; i++)
{ for (j=0; j
這邊
printf("\n");
}
如果我想要將轉完後的值…分別用一個位元存它…這樣子…要怎麼辦?
你指點的部分好像是…
0==>"000"直接存入陣列中
那如果是這樣子的話…
0==>"0" "0" "0" 三個bit各別存…
這樣子程式要如何去表示它?
2007-12-14 03:55:01 · update #2
to Jacob Lee大大…
因我的程式用意是...
將此字串中的==>
ori[0][63]==>0265473254....
轉完後為==>000010110101100111011010101100....
bin[0][189]==>000010110101100111011010101100....
2007-12-14 05:43:23 · update #3
我的陣列大小設為
ori[50][63] ==>產生了50個字串,每個字串裡都有63個0~7隨機的數字
經由轉換後…我想要存放的陣列如下…
bin[50][63*3]==>一樣有50個字串,但一個0~7之值都是對應3bit,我想將對應的3bit分別存放
2007-12-14 05:43:28 · update #4
指點一下很好;只要程式不好!
1. 宣告一個陣列: char *Oct[] = { "000", "001", "010", "011", "100", "101", "110", "111" };
2. 每個原始字串裡的每一個字元,改用上列 Oct 去印:
for (i=0; i<50; i++)
{ for (j=0; j
printf("\n");
}
哪不懂請再問。
加油!^_^
2007-12-14 10:30:10 補充:
轉完後的值…分別用一個位元存它??
不懂!
你是要用一個 變數,如:8 bytes 的 int 去存?
那就顯不出 8 進位啦!?
你是要用一個字串陣列去存?
那你要先宣告一堆 63*3 +1 的陣列!
每一個原始數分別進入對應的洞裡,最後(就是+1那個)補上 '\0' 就可以了。
如:
for (t=k=0; k<63; k++, t+=3)
strcmp( &Dst[t], Oct[Org[...] ]);
Dst[t] = '\0';
就可以了
2007-12-14 15:08:53 補充:
3 bits 還是 3 bytes?
3 bits 的話,它根本就是個 63*3 bits 二進位的整數!
只要用點小技巧,就可以把它存在 3 * 2個32bits 的整數裡!
問題是,你還是要把它轉換成 3 個 bits 一組後,才能用!
難道逃跑的青蛙說對了:你是要用來做編密?
那,我建議你用 bit field + union!
設定的程式會很煩鎖;但設定完後,資料量很小、且很好用!
2007-12-14 23:35:16 補充:
既然有人 post 程式,我也只好獻醜!
請參考我論壇裡的這篇 http://www.phpbbserver.com/graphicsparalle/viewtopic.php?t=177
它目前只有字串 → 字串版。
如果你要的真的是字串 → bits 版,請告訴詳細用途,以便做最好的結構建議。
如我最開始所說:只要程式不好!
若真的寫不出來,要小弟幫忙抓刀,請告知。
2007-12-15 00:22:09 補充:
對了,那裡目前雖是字串版,不過有兩個版在裡面:3*63bits 都連續 和 3 個 連續63bits 。
2007-12-19 07:08:05 補充:
我想,你說的〝我想將對應的3bit分別存放〞應該就是我寫的第二個版吧!
2007-12-13 18:28:20 · answer #1 · answered by ? 7 · 0⤊ 0⤋
//Power by Visual Studio 2005
//Download Site: http://www.microsoft.com/taiwan/vstudio/express/
//八進制轉二進制…
#include
#include
#include
#include
#define MAX_Length 63
int main(int argc, char* argv[]){
//=====START=====//
int i,j;
char str[MAX_Length+1]="",binary[MAX_Length][4]={""},tmp[4]="";
srand((unsigned)time(NULL));
for(i=0;i
itoa(str[i]-'0',tmp,2);
if(strlen(tmp)<3){
strcpy((tmp+3-strlen(tmp)),tmp);
for(j=0;j<(3-(int)strlen(tmp));j++){
tmp[j]='0';
}
}
strcpy(binary[i],tmp);
}
printf("String= %s\nCode=",str);
for(i=0;i
}
//=====END=====//
system("PAUSE");
return 0;
}
2007-12-14 18:07:49 補充:
產生 1 個以上的字串和編碼:
請自行加入 for 迴圈和 str[50][MAX_Length+1]、 binary[50][MAX_Length][4] 來產生。
2007-12-14 13:04:51 · answer #2 · answered by Big_John-tw 7 · 0⤊ 0⤋
沁安:
這問題你問過很多次了,請問你現在是在做編解碼相關的作業嗎?
還是你正在修編解碼相關的課程。
P.S 只是好奇!!
2007-12-14 02:49:51 · answer #3 · answered by ? 5 · 0⤊ 0⤋