我必須將給定的二進制輸入(例如1101)轉換爲十進制,但輸入不是字符串數組或整數(傳遞的參數是const char *binstr
)。我應該如何訪問二進制數字的每個單獨的數字,以便我可以對每個數字執行pow(x,y)並將它們加在一起得到小數?訪問字符串中的元素?
回答
binstr[0];
binstr[1];
binstr[2];
等
,或者你可以通過指針
char* s = binstr;
unsigned long x =0;
while(*s) { x = x << 1; x |= (*s == '1' ? 1:0); s++;}
printf("the decimal of %s is %ul", binstr, x);
我似乎無法看到讓binstr [i]給出正確的輸出。如果我嘗試打印一個像printf(「%d」,binstr [2])這樣的元素,我沒有得到正確的輸出,例如用char * binstr =「1101」;對於binstr [0],binstr [1]和binstr [3],對於binstr [2]我得到49。 – Adam 2013-02-21 00:38:18
哦,它的一個字符printf(「%c」,binstr [2]);將打印字符....字符'1'是十六進制31 ...你可以做printf(「%d」,binstr [2] - 0x30);這會給你所期待的,我認爲 – 2013-02-21 00:39:57
48是字符「0」的ASCII編碼。如果'c'是'0'或'1',則'c''0'是'0'或'1'。 – 2013-02-21 00:40:13
const char *
做到這一點通常是指C字符串。你可以只用strtol(3)
:
int x = strtol(binstr, NULL, 2);
你已經做出了c string
,你可以得到每個字符類似陣列的方式:
input[i]
這裏的二進制字符串分割成單獨的一個例子比特(字符)並打印出來:http://cfiddle.net/wYtKJv
您可以使用循環:
while(i<100){
if(binstr[i]== '\0'){
break;
}
printf("First Bit:\n%c\n\n",binstr[i]);
i++;
}
由於C字符串是空終止的,你可以檢查一下如果我們點擊的字符是'\0'
到break
循環。
在循環中,您還可以將chars
轉換爲ints
並將它們存儲在某個位置(可能是數組),您可以在其中存取它們進行計算。
我似乎無法讓binstr [i]給出正確的輸出。如果我嘗試打印一個像printf(「%d」,binstr [2]);'這樣的元素,我沒有得到正確的輸出 'char * binstr =「1101」;',對於binstr [0],binstr [1]和binstr [3],對於binstr [2]我得到49。 – Adam 2013-02-21 00:34:02
我不知道你爲什麼選擇循環100次,但是你應該使用'while(* ptr){/ * ... * /}' – 2013-02-21 00:35:54
@EdS。那麼,這取決於十進制數的大小,這是誇大的。 – turnt 2013-02-21 00:38:36
你可以試試這個程序,從二進制轉換爲十進制
char *binstr = "1011011";
int num = 0, sum = 0, ctr = 0;
ctr = strlen(binstr) - 1;
do{
sum += ((binstr[ctr] & 0x1) << num);
ctr--;
num ++;
}while(ctr >= 0);
'(binstr [ctr]&0x1)'對字符「0」和「1」的數字表示進行了假設。這個假設幾乎可以肯定是有效的,但是除非你真的需要從代碼中擠出最後一個CPU週期,否則最好更清楚。 – 2013-02-21 00:41:52
在這個問題中,提到輸入是一個二進制字符串。因此,代碼只考慮2個符號「0」和「1」。我不確定我是否完全理解你的觀點。 – Ganesh 2013-02-21 00:44:17
我假設(我仍然認爲)該字符串由數字「0」和「1」構成,而不是「0」和「1」。也許我錯了;這個問題並不完全清楚。 – 2013-02-21 00:46:03
- 1. 訪問字符串元素在MATLAB
- 2. 訪問分割字符串的元素中的R
- 3. 如何訪問postgresql字符串數組中的元素
- 4. 如何訪問R中字符串列表的元素?
- 5. MIPS:訪問並比較字符串數組中的元素
- 6. 如何在C中訪問字符串數組的元素#
- 7. 問題,使用元素的字符串
- 8. 訪問字符串數組的第一個元素用C
- 9. 如何訪問PHP數組的字符串索引元素?
- 10. DotLiquid - 通過字符串索引器訪問集合元素?
- 11. 如何使用字符串訪問Perl數組元素?
- 12. 字符串訪問
- 13. 字符串中的Ruby訪問字
- 14. 訪問字典詞典中的元素
- 15. 訪問字典中的元素?蟒蛇
- 16. 訪問字節元素
- 17. 按值列出字符串元素中的字符串
- 18. 訪問字符串的隨機符文元素,不用於...範圍
- 19. C:無法從結構中的字符串數組訪問元素
- 20. 如何使用字符串訪問PHP多維數組中的元素?
- 21. 集合中元素的子字符串
- 22. NSMutableArray中元素的字符串轉換
- 23. 在HTMLDocument中字符串的元素
- 24. 刪除字符串元素
- 25. Javascript元素到字符串
- 26. 在Java字符串元素
- 27. 字符串和字符元素
- 28. 訪問treeset中的元素
- 29. 訪問IBOutletCollection中的元素
- 30. 訪問JSON對象中的字符串
取決於編碼... – Bingo 2013-02-21 00:23:08
你能告訴你的輸入是什麼樣一個完整的定義? – 2013-02-21 00:24:56
「二進制輸入」是什麼意思?你的'binstr'指向'char'元素數組的第一個元素;是那些可打印的數字「0」和「1」,或者它們是數字值「0」還是「1」,或者它們是別的什麼? – 2013-02-21 00:47:25