linux 下實現 itoa 轉二進位制

2021-10-02 05:03:01 字數 1292 閱讀 7787

linux下,需要將整數轉化為二進位制,很自然想到itoa,發現這函式竟然編譯不通過。標準庫中貌似有這個實現,不明白了~ 網上參考了帖子,下面實現**:

感覺這方法有點費腦,不是很直觀。

取模的方法一般都是從低位到高位,所以儲存的字串結果一般會跟需要的結果相反,需要倒轉,要解決這個問題,可以從字串陣列後面開始往前儲存。

#include

#include

#define buf_len 64

char

*i2bin

(unsigned

long

long v,

char

* buf,

int len)

char

* dst = buf + len -1;

*dst =

'\0'

;while

(v)memcpy

(buf, dst, buf + len - dst)

;return buf;

}int

main()

;char

* res =

i2bin

(v, buf, buf_len)

; res ?

printf

("data: %s, len: %lu\n"

,i2bin

(v, buf, buf_len)

,strlen

(buf)):

printf

("fail\n");

}

參考 redis sds.c 原始碼,把下面原始碼的 10 改為 2 即可。

int

sdsll2str

(char

*s,long

long value)

while

(v);

if(value <0)

*p++

='-'

;/* compute length and add null term. */

l = p - s;

*p =

'\0'

;/* reverse the string. */

p--;while

(s < p)

return l;

}

? 文章**《linux 下實現 itoa 轉二進位制

二進位制如何轉十進位制,十進位制如何轉二進位制

學計算機的朋友剛開始學習時都要接觸進製之間的轉換,二進位制 十進位制 八進位制 十六進製制等,這個是很枯燥的,轉來轉去就轉矇圈了,別蒙別蒙,今天咱們乙個乙個搞定,看看二進位制和十進位制之間如何相互轉換的。轉成二進位制主要有以下幾種 正整數轉二進位制,負整數轉二進位制,小數轉二進位制 1 正整數轉成二...

二進位制如何轉十進位制,十進位制如何轉二進位制

二進位制如何轉十進位制,十進位制如何轉二進位制 1 正整數轉成二進位制。要點一定一定要記住哈 除二取餘,然後倒序排列,高位補零。也就是說,將正的十進位制數除以二,得到的商再除以二,依次類推知道商為零或一時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零就ok咧。哎呀,還是舉說明吧,比如42轉...

Python二進位制轉十進位制演算法 十進轉二進位制演算法

二進位制數轉換成十進位制數 二進位制數從右向左每位數乘以2的次方 從0開始,從右向左依次 1 然後相加求和即可 如 0101轉成十進位制為 1 20 0 21 1 22 0 23 1 0 4 0 5 演算法實現 coding utf 8 b raw input 請輸入乙個二進位制數 decode u...