本文主要講述整數、二進位制字串與十六進製制字串之間的轉換。
使用_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...