乙個十進位制數字轉換成任意的其它常用進製(比如二進位制或者八進位制,十六進製制……)。通常我們可以使用convert.tostring的乙個過載函式去完成:
(具體**和函式體宣告,請看給出的msdn例子)。
現在有客戶提出乙個問題:你那個convert只能夠接受byte,int或者long型別,那麼我其它型別的數字怎麼辦(比如無符號型別的一類,如uint,ulong)?難道還要強制轉化成帶符號的int或者long?強制轉換之間如果損失誰賠償呢?呵呵!
這裡非常感謝亂馬客給我「當頭棒喝」,點撥我一下。要解決這個問題,我們可以借助bitconverter這個類的乙個方免費發布資訊法getbytes。這個方法的原理如下:
1)現在假設有乙個十進位制數字10(二進位制:00001010)。
2)因為8個bit是乙個位元組(byte),因此getbytes將返回乙個byte陣列(10,0,0,0);也就是說:把十進位制轉化成二進位制,然後從右到左,每8個bit作為乙個byte存入從第乙個位元組開始的記憶體單元中。(返回的byte陣列的長度(個數)取決於被轉換數字的型別自身長度,比如int返回4個位元組陣列(包括uint),long(ulong)返回8個位元組陣列等)。
亂馬客所引用的回答如下:(引用原文:
)[c#]
string s = string.empty;複製**foreach (byte b in bitconverter.getbytes(10))
console.writeline(s);
[vb.net]
dim s as複製**string = [string].empty
foreach b as
byte
in bitconverter.getbytes(10)
s += convert.tostring(b, 2).padleft(8, "
0"c)
next
console.writeline(s)
這樣做當然完全正確,只是略有寫「觀感不佳」——因為最低位永遠是放到前面的,這樣最左邊是2的0 次方(或者是m的n-1次方
)形式。所以改進演算法這樣這樣就可以了:
[c#]
int unum = 0;複製**byte bytes = bitconverter.getbytes(unum);
string s = "";
foreach (var item in bytes)
console.writeline(s);
[vb.net]
dim unum asinteger = 0
dim bytes as
byte() = bitconverter.getbytes(unum)
dim s as
string = ""
foreach item as var in bytes
s = convert.tostring(item, 2).padleft(8, "
0"c) & s '2可以改成16或者8
next
console.writeline(s)複製**
乙個十進位制數字轉換成任意的其它常用進製(比如二進位制或者八進位制,十六進製制……)。通常我們可以使用convert.tostring的乙個過載函式去完成:
(具體**和函式體宣告,請看給出的msdn例子)。
現在有客戶提出乙個問題:你那個convert只能夠接受byte,int或者long型別,那麼我其它型別的數字怎麼辦(比如無符號型別的一類,如uint,ulong)?難道還要強制轉化成帶符號的int或者long?強制轉換之間如果損失誰賠償呢?呵呵!
這裡非常感謝亂馬客給我「當頭棒喝」,點撥我一下。要解決這個問題,我們可以借助bitconverter這個類的乙個方免費發布資訊法getbytes。這個方法的原理如下:
1)現在假設有乙個十進位制數字10(二進位制:00001010)。
2)因為8個bit是乙個位元組(byte),因此getbytes將返回乙個byte陣列(10,0,0,0);也就是說:把十進位制轉化成二進位制,然後從右到左,每8個bit作為乙個byte存入從第乙個位元組開始的記憶體單元中。(返回的byte陣列的長度(個數)取決於被轉換數字的型別自身長度,比如int返回4個位元組陣列(包括uint),long(ulong)返回8個位元組陣列等)。
亂馬客所引用的回答如下:(引用原文:
)[c#]
string s = string.empty;複製**foreach (byte b in bitconverter.getbytes(10))
console.writeline(s);
[vb.net]
dim s as複製**string = [string].empty
foreach b as
byte
in bitconverter.getbytes(10)
s += convert.tostring(b, 2).padleft(8, "
0"c)
next
console.writeline(s)
這樣做當然完全正確,只是略有寫「觀感不佳」——因為最低位永遠是放到前面的,這樣最左邊是2的0 次方(或者是m的n-1次方
)形式。所以改進演算法這樣這樣就可以了:
[c#]
int unum = 0;複製**byte bytes = bitconverter.getbytes(unum);
string s = "";
foreach (var item in bytes)
console.writeline(s);
[vb.net]
dim unum asinteger = 0
dim bytes as
byte() = bitconverter.getbytes(unum)
dim s as
string = ""
foreach item as var in bytes
s = convert.tostring(item, 2).padleft(8, "
0"c) & s '2可以改成16或者8
next
console.writeline(s)複製**
十進位制任意整數型別向常見數值型別進製轉換的通用辦法
乙個十進位制數字轉換成任意的其它常用進製 比如二進位制或者八進位制,十六進製制 通常我們可以使用convert.tostring的乙個過載函式去完成 具體 和函式體宣告,請看給出的msdn例子 現在有客戶提出乙個問題 你那個convert只能夠接受byte,int或者long型別,那麼我其它型別的數...
十進位制整數轉化R進製整數
棧結構的邏輯結構為線性的,可建立鏈式結構使得入棧 出棧的操作是動態的,也可以很好地實現進製的轉換。而且進製轉換恰好和棧的輸入輸出輸出類似,故選擇棧是最好的。功能 該函式實現建立初始化的棧。具體過程 1.建立乙個棧結構體指標s 2.將s指標指向的s top賦予 1,即定義棧頂初始為空。功能 該函式實現...
棧 十進位制轉化為任意制
include include define stack init size 100 define size increment 5 typedef struct 棧結構 sqstack,sqstack int stackinit sqstack s 初始化棧 int push sqstack s,...