C 中幾種資料型別轉換

2021-07-24 15:29:45 字數 1731 閱讀 7003

c++ 中經常會需要資料型別轉換,比如int ->char,cstring 到string char->uchar 等等。

//unicode 字符集下 cstring 轉 string

void ustrtoascchar(const cstringw cs, char *buff)

// string 轉cstring

cstring cs_str(str.c_str());

第一種int<->char 相互轉換(該方法是字元型填充,比如 int x= 4658->char a= 「4658」; char a= 「4658」 ->int x=4658)

//int ->char 

int data_size = 5401;

char buf1[4] = ;

sprintf(buf1, "%d", data_size); //將data_size寫入buf1

// char ->int

int size;

sscanf(buf1,"%d",&size); //將 字串buf1以整型格式讀入size

第二種int ->char 轉換(二進位制方式)

int i = 796582;

char buf1[4] = ;

// int->char

buf[0] = (char)(0xff & i);

buf[1] = (char)((0xff00 & i) >> 8);

buf[2] = (char)((0xff0000 & i) >> 16);

buf[3] = (char)((0xff000000 & i) >> 24);

//char->int

//如果你用的編譯器預設char為 有符號的,注意要將char->uchar->int

//如果編譯器預設char為 無符號的,則可以直接轉

uchar buf2 = ;

for(int i = 0;i < 4; i++)

int j = (int)((buf2[0]) | ((buf2[1]) << 8) | ((buf2[2]) << 16) | ((buf2[3]) << 24));

//另外,如果將包含0的char送到string中,則char中的0元素會自動抹

//掉,這點在網路傳輸的包頭中要注意。如果實在需要保留char中的0元素,//可以按位元組賦值

string str(4,'0');

for(int i = 0;i < 4; i++)

影象資料mat 與vector 之間的轉換

// mat convert to byte array

vector

cwatchfacedlg::matconvbyte(mat img)

// byte array convert to mat

cv::mat cwatchfacedlg::bytestomat(std::vector

bytes, int height, int width)

string -> vector 之間的轉換

// string convert to byte array

std::vector

cwatchfacedlg::stringtobyte(string str)

C 幾種資料型別轉換

1.int 變數名 強制型別轉換 該轉換方式主要用於數字型別之間的轉換,從int型別向long,float,double,decimal 型別轉換可以使用隱式轉換,但從long型到int 就需要使用顯示轉換,即使用該型別的轉換方式否則產生編譯錯誤。該方式對於浮點數會無條件的捨去,會失去精確度 對於c...

qt幾種資料型別轉換

1 int型轉十六進製制 補0 qstring s s qstring 1 arg k,4,16,qlatin1char 0 k為int或char都可,第二個引數為資料寬度,第三個引數為進製 不補 0 s qstring number k,16 2 十六進製制轉浮點數 正數 qstring str ...

C 中幾種資料型別轉化總結

類名 變數 強制轉換 不能轉換會丟擲異常,值和 引用型別都可以 變數 as 類名 as 運算子用於執行引用型別的顯式型別轉換。如果要轉換的型別與指定型別相容,轉換就會成功 如果型別不相容,則返回null。還有conver.to x 主要用在值型別 將乙個基本資料型別轉換為另乙個基本資料型別 int ...