C 資料格式轉換

2021-08-14 04:32:42 字數 3481 閱讀 3391

本文主要講述整數、二進位制字串與十六進製制字串之間的轉換。

使用_ltoa_s()函式可以將整數轉換為二進位制字串。該函式的作用是將乙個

long

整數轉換為字串。

_ltoa_s()

函式有很多格式,其中的乙個格式為

errno_t _ltoa_s(long value, char *str, int radix);
其中,引數value指定了要轉換的整數;

str指定轉換後的字串;

radix

指定了要將

value

轉換成的進製。如果轉換成功,返回值是

0;如果轉換失敗,則返回失敗**。

long i = 1024l;

char b[33], bs[33];

_ltoa_s(i, b, 2);

sprintf_s(bs, "%032s", b);

printf("i=%d, bs=%s\n", i, bs);

其中,sprintf_s()

函式的作用是將轉換後的字串

b進行格式化處理,並將格式化後的字串儲存在

bs中。將b進行

%032s

的格式化,其中,

32表示轉換後的字串長度為

32,32

前面的0

表示如果

b的位數不足

32,則用

0補齊。輸出後的效果如圖

1所示。

圖1 將整數轉換為二進位制字串

依然使用_ltoa_s()函式,可以將整數轉換為十六進製制字串。

i = 1024l;

char hs[9], h[9];

_ltoa_s(i, h, 16);

sprintf_s(hs, "%08s", h);

printf("i=%d, hs=%s\n", i, hs);

其中,_ltoa_s()函式的第

3個引數

16表示將整數

i轉換為

16進製制的字串;

sprintf_s()

函式的第

2個引數指定了轉換的格式,

8表示轉換後的字串位數是8位,

8前面的

0表示不足

8位時,用

0來填充。輸出的效果如圖

2所示。

圖2 將整數轉換為十六進製制字串

使用strtol()函式可以將二進位制字串轉換為整數。該函式的格式為

long strtol(const char* nptr, char **endptr, int base);
其中,引數nptr指定了要轉換的字串;

endptr

指向了停止掃瞄的字元;

base

指定了nptr

對應的進製數。返回值是轉換後的整數。

strncpy_s(bs, 33, "00000000000000000000010000000000", 33);

char *e;

i = strtol(bs, &e, 2);

printf("bs=%s, i=%d\n", bs, i);

其中,strncpy_s()函式的作用是將

bs指定為二進位制字串;

strtol()

函式的第

3個引數指定了

bs表示的字串對應的是二進位制。其輸出如圖

3所示。

圖3 將二進位制字串轉換為整數

依然使用strtol()函式,將十六進製制字串轉換為整數。

strncpy_s(hs, 9, "00000400", 9);

i = strtol(hs, &e, 16);

printf("hs=%s, i=%d\n", hs, i);

其中,strtol()函式的第

2個引數

e是在「

2.1

將二進位制字串轉換為整數」中定義的變數;第

3個引數

16表示

hs表示的字串其對應

16進製制。以上**的輸出如圖

4所示。

圖4 將十六進製制字串轉換為整數

將二進位制字串轉換為十六進製制字串,實際上就是使用在「2.1

將二進位制字串轉換為整數」中提到的方法,先將二進位制字串轉換為整數,之後使用「

1.2將整數轉換為十六進製制字串」中提到的方法,再將整數轉換為十六進製制字串。

//將將二進位制字串轉換為整數

strncpy_s(bs, 33, "00000000000000000000010000000000", 33);

i = strtol(bs, &e, 2);

//將整數轉換為十六進製制字串

_ltoa_s(i, h, 16);

sprintf_s(hs, "%08s", h);

printf("bs=%s, hs=%s\n", bs, hs);

以上**的輸出如圖5所示。

圖5 將二進位制字串轉換為十六進製制字串

將二進位制字串轉換為十六進製制字串,實際上就是使用在「2.2

將十六進製制字串轉換為整數」中提到的方法,先將十六進製制字串轉換為整數,之後使用「

1.1將整數轉換為二進位制字串」中提到的方法,再將整數轉換為二進位制字串。

//將將十六進製制字串轉換為整數

strncpy_s(hs, 9, "00000400", 9);

i = strtol(hs, &e, 16);

//將整數轉換為二進位制字串

_ltoa_s(i, b, 2);

sprintf_s(bs, "%032s", b);

printf("hs=%s, bs=%s\n", hs, bs);

以上**的輸出如圖6所示。

圖6 將十六進製制字串轉換為二進位制字串

C 常用的資料格式轉換

用dataformatstring格式化gridview 在 gridview裡面顯示資料,要顯示的資料有好多位小數,就想讓它只顯示兩位小數,在delphi裡,直接用displayformat就行了,在.net中,查了半天msdn,發現使用dataformatstring是可以實現這個功能的,但是怎...

Python資料格式轉換

函式 描述int x base 將x轉換為乙個整數 long x base 將x轉換為乙個長整數 float x 將x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將物件 x 轉換為字串 repr x 將物件 x 轉換為表示式字串 eval str 用來計算在字串中...

stingstream的資料格式轉換

如果想從字串中提取 整形 浮點型 等資料可以通過stringstream來轉換。include 在使用stringsteam時注意對記憶體的處理。例如 int circle 3 stringstream test string str int num float f while circle cir...