關於C轉碼問題,如果字串裡面含有中文 英文 數字,那請問怎樣轉為對應的16進位制資料

2021-07-01 02:05:50 字數 3150 閱讀 3261

1樓:翲燚

字元編碼是將字元(中文、英文、數字等)對映到二進位制(或言byte,或言16進位制,都是不同的表現形式而已)。

這個對映是人為定義的,也是不唯一的,每一套對映都被稱為是一個字元編碼。字元的傳輸,都是要編碼-傳輸-解碼的過程,而常見的亂碼問題,實際上就是編碼和解碼所使用的字元編碼不相同所引發的。

常見的gb2312、utf8等,都是不相同的字元編碼。

將字串轉換到16進位制,只要先制定一個字元編碼轉化為byte。下面例項使用utf8轉換:

byte data = system.text.encoding.utf8.getbytes("中文english0123456789");

然後將byte轉換為十六進位制表示即可。.net只提供了byte到16進位制的方法,所以在這裡新寫了一個byte到16進位制的方法:

string hex(byte data)

return hex;}

2樓:然後去遠足

參考:using system;

using system.text;

public string convertstringtohex(string input, encoding encoding = null)

return output;

}public string converthextostring(string input, encoding encoding = null)

, stringsplitoptions.removeemptyentries);

byte bytes = new byte[chars.length];

for (int i = 0; i < chars.length; i++)

string output = encoding.getstring(bytes);

return output;}

3樓:style騎o川藏線

system.text.encoding.utf8.getstring()

c#如何將16進位制字串轉換為漢字?

4樓:匿名使用者

假定你輸入d0bbd0bb是在textbox1,結果要顯示在textbox2中,那就是

public static byte hexstringtobytearray(string s)

當你要轉換的時候即為

textbox2.text=encoding.getencoding("gb2312").

getstring(hexstringtobytearray(textbox1.text));

c#中數值轉換和16進位制運算問題?

5樓:匿名使用者

你是不是對convert.toint16()函式理解錯了,int aa = convert.toint16(a, 16);

是將字串a按16進位制的方式轉換成10進位制,故aa為76,bb同理。

所以**中的結果確實是按10進位制運算的。

需要追究c#是如何進行16進位制計算的嗎,在計算機中只有二進位制運算,只不過表現給人看的有八進位制、十進位制、十六進位制。

如果不進行處理任何數值處理的輸出都是十進位制int a = 0xa;

int b = 0x2;

console.writeline(a + b);

你將看到的是12而不是c。

6樓:乁

16進位制運算和

十進位制一樣,比如4c+33

4c+ 33 c+3 c就是12,12+3=15,那就是f,4+3=7

7f如果有進位那就和十進位制的做法一樣,比如 34+7f34+7f

b34+f,f從4那裡取1之後就可以進位,所以4就剩3,進位過去後3+7=10加上 進的那一位就是11,也就是b

7樓:歷又

c#不支援16進位制的運算,如果是用16進製表示的數字,會先轉換為10進位制數,再參與運算。如:int temp=0xf; temp為15;0xf+0x1,結果為16。

//16進位制資料

string a = "4c";

string b = "33";

////16進位制轉換為10進位制

int inta = convert.toint16(a, 16);

int intb = convert.toint16(b, 16);

int intc = inta + intb;

//10進位制轉換為16進位制

string stra = convert.tostring(inta, 16);

string strb = convert.tostring(intb, 16);

string strc = convert.tostring(intc, 16);

console.writeline(stra);//4c

console.writeline(strb);//33

console.writeline(strc);//7f

8樓:

convert.toint32(str); 將字元型轉化為整型

int i=15;

string s = convert.tostring(i,16); 將整型轉化為16進.(小寫)

string s = i.tostring("x"); 將整型轉化為16進.(大寫)

請問c#中如何將十六進位制數的字串轉化成十進位制數的字串

9樓:匿名使用者

convert.toint64(”9542098e“, 16);

試試看,我已經測試過了是可以的,樓主原來的32toint32溢位了,所以換成64就可以

希望對你有幫助。

10樓:匿名使用者

string str="0x9542098e";

uint a= convert.touint32(str, 16);

11樓:匿名使用者

convert.toint32("9542098e", 10);

試驗一下。

c為字串陣列動態賦值的問題,C 為字串陣列動態賦值的問題

改用list吧.方法一是沒有new 沒有分配空間 方法二是在new的時候沒有指定大小,預設是0個元素,所以對其任意一個元素賦值都是越界.在c 中,陣列一般用來存放大小確定的資料.如果陣列大小未知,建議使用list lista new list a.add we messagebox.show a 0...

C語言字串陣列問題

c語言中,賦值 與 賦初值 又叫初始化 是不一樣的。在定義變數的同時賦值,叫賦初值,而定義後賦值就是普通的賦值了。你說的 不能用賦值語句將一字串常量或字元陣列直接賦值給一個字元陣列 這句話是說普通賦值的情況,也就是,不能定義一個字元陣列以後,再給他直接賦值。而 char s 12345 這個語句,是...

字串指標移動問題,關於字串和指標的問題

因為 p 沒有分配記憶體,指向的是系統的記憶體,那段記憶體是隻讀的,因此改變那裡的值是錯誤的 char a abcde char p a p 1 w 這樣是正確的,因為a那段記憶體是可寫的 你上面的,你可以理解為 const char a abcde char p a p 1 w 錯誤,因為a是co...