c語言byte轉int
Ⅰ c語言中將一個位元組數據轉換成對應十進制數字字元串
#include<stdio.h>
intBin2Dec(charbin[]){
inti,num=0;
for(i=0;bin[i];++i){
if(bin[i]>='0'&&bin[i]<='1')
num=2*num+bin[i]-'0';
}
returnnum;
}
intmain(){
chars[5][20]={"0010000","1101001001010","111000101010101","1101001001001010","10101000010101"};
inti;
for(i=0;i<5;++i)
printf("%20s:%d ",s[i],Bin2Dec(s[i]));
printf(" 完成! ");
return0;
}
Ⅱ C語言位元組與整形之間變換,求怎樣做的
從高位元組到低位元組,依次輸入(即:x1->x2->x3->x4)
x = ((int)x1<<24) + ((int)x2<<16) + ((int)x3<<8) + ((int)x4);
寫成宏:
#define change(x1,x2,x3,x4) ((int)x1<<24) + ((int)x2<<16) + ((int)x3<<8) + ((int)x4)
調用:
x = change(x1,x2,x3,x4);
Ⅲ 用C語言實現四個位元組數到一個整形數的轉換。
#include <stdio.h>
int main(){
long int x1 = 0x00;
long int x2 = 0x01;
long int x3 = 0xe2;
long int x4 = 0x40;
long int result = (x1 << 24) + (x2 << 16) + (x3 << 8) + x4;
printf("0x%08lx, %ld\n", result, result);
return 0;
}
Ⅳ c語言 將byte轉化為二進制數值計算 2021.4.7 109
BYTE bytes1[4] = {0x00,0x10,0x40,0x00}; //創建4位元組的位元組數組 注意:位元組是逆序的
BYTE bytes2[4] = {0x05,0x20,0x40,0x00};
DWORD b1 = *(DWORD *)bytes1; //先將bytes1轉化成(DWORD *)的指針 再用取值符 * 獲得四個位元組的值
DWORD b2 = *(DWORD *)bytes2;
DWORD result = b1-b2; //進行二進制計算
printf("%X-%X=%X",b1,b2,result);
Ⅳ 求C語言中int ,long int,char,float,short,DWORD,WORD,BYTE,byte的大小
變數佔用內存位元組由操作系統決定,
64位系統中,long佔用8位元組,……
32位操作系統中,int,long佔用4位元組,short佔用2位元組……
16位系統中,int佔用2位元組,……
數字3佔用多少,和你聲明的的類型有關,
在32位系統中,將3賦值給short型變數,他就佔用2個位元組,如果賦值給int型,他就佔用4個位元組
可以用sizeof這個函數來計算。例子:
int x, n;
n = sizeof(x);
n的值就是結果。
Ⅵ C語言中,字元串怎麼轉換為int數組
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<conio.h>
voidmain(){
intexc_n(charch[]);intpnum=0;
do{//套用了我之前寫的一個轉換函數,輸出有點勉強。。。(固定輸出頭0x0...)
charch[10]={0};charspr[2]={0};//分隔輸入
printf("inputthestringofnum. 不得不說下,每次輸入一個數據,按'x'可以結束程序 ");
scanf("%s",&ch);
printf("0x0%x ",pnum=exc_n(ch));
//printf("%x",pnum);
}while(getch()!='x');
}
//該函數將字元串型數字與整型數字單向轉換
intexc_n(charch[]){//,longlnum){
intsize=0;intnum=0;
if(sizeof(ch[0])>0)
size=strlen(ch);inti=0;
while(size>=0){
if(ch[size]>47&&ch[size]<58){num=num+(ch[size]-48)*(int)pow(10,i++);
}
size--;
//
}
returnnum;
}
Ⅶ C語言,兩位元組轉換成一個是有符號短整形
32位機器,可以看看下面的程序,我自己寫的
#include <stdio.h>
#include <string.h>
//判斷您的計算機是大端還是小端
int is_little(){
union test{
int num;
char str;
} t;
t.num=1;
return t.str==1;
}
int main(){
char* str="your string"; //你的字元串
short tmp[100]; //你的數組
int i;
for (i=0;i<strlen(str)/2;i++){
if(is_little()){
/*小端必須手動調節
可以換成
char a=*(str+i*2);
char b=*(str+i*2+1);
tmp[i]=a*256+b;
*/
int org=(*(int*)(str+i*2))<<16>>16;
int a=org<<24>>24;
int b=org>>8;
tmp[i]=a*256+b;
}else {
tmp[i]=*(int*)(str+i*2)>>16;
}
printf("%d ",tmp[i]);
}
printf("\n");
return 0;
}
Ⅷ 怎樣用C語言讀取txt文件中的二進制數據並轉為一維數組
使用read()函數以下為網路的介紹
函數名:read
功 能:從文件中讀
函數原型 :int read(int handle, void *buf, int nbyte);
表頭文件:#include <unistd.h>
函數說明:read()會把參數handle所指的文件傳送nbyte個位元組到buf指針所指的內存中。若參數nbyte為0,則read()不會有作用並返回0。返回值為實際讀取到的位元組數,如果返回0,表示已到達文件尾或無可讀取的數據。
程序例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <io.h>
#include <alloc.h>
#include <fcntl.h>
#include <process.h>
#include <sys\stat.h>
int main(void)
{
void *buf;
int handle, bytes;
buf = malloc(10);
/*
Looks for a file in the current directory named TEST.$$$ and attempts
to read 10 bytes from it. To use this example you should create the
file TEST.$$$
*/
if ((handle =
open("TEST.$$$", O_RDONLY | O_BINARY, S_IWRITE | S_IREAD)) == -1)
{
printf("Error Opening File\n");
exit(1);
}
if ((bytes = read(handle, buf, 10)) == -1) {
printf("Read Failed.\n");
exit(1);
}
else {
printf("Read: %d bytes read.\n", bytes);
}
return 0;
}
2Linux C
編輯
定義函數
ssize_t read(int fd, void *buf, size_t count);
返回值
成功返回讀取的位元組數,出錯返回-1並設置errno,如果在調read之前已到達文件末尾,則這次read返回0。
參數
參數count是請求讀取的位元組數,讀上來的數據保存在緩沖區buf中,同時文件的當前讀寫位置向後移。注意這個讀寫位置和使用C標准I/O庫時的讀寫位置有可能不同,這個讀寫位置是記在內核中的,而使用C標准I/O庫時的讀寫位置是用戶空間I/O緩沖區中的位置。比如用fgetc讀一個位元組,fgetc有可能從內核中預讀1024個位元組到I/O緩沖區中,再返回第一個位元組,這時該文件在內核中記錄的讀寫位置是1024,而在FILE結構體中記錄的讀寫位置是1。注意返回值類型是ssize_t,表示有符號的size_t,這樣既可以返回正的位元組數、0(表示到達文件末尾)也可以返回負值-1(表示出錯)。
read函數返回時,返回值說明了buf中前多少個位元組是剛讀上來的。有些情況下,實際讀到的位元組數(返回值)會小於請求讀的位元組數count,例如:讀常規文件時,在讀到count個位元組之前已到達文件末尾。例如,距文件末尾還有30個位元組而請求讀100個位元組,則read返回30,下次read將返回0。
Ⅸ c語言 二進制的byte數組轉化為int數組
如果byte裡面保存的是數值,那麼你可以調整順序(低位在前,高位在後)之後,通過memcpy直接轉換:
memcpy(&intVar, byteArray, sizeof(int));
如果byte保存的是數字的字元,那麼你需要進行轉換,具體如何轉換,要看byte裡面保存的是什麼格式了。
Ⅹ 一個數字在C語言中是多少個位元組
在C語言中,一個數字佔4個位元組或8個位元組。(以下試驗都是基於32位計算機系統)
當該數字為整數時,佔4個位元組(默認轉換為int類型);
當該數字為小數時,佔8個位元組(默認轉換為double類型)。
可以通過如下的程序段來驗證:
printf("%d\n",
sizeof(4));
//
輸出4,即佔4個位元組(轉換為int類型,相當於sizeof(int))
printf("%d\n",
sizeof(4.5));
//
輸出8,即佔8個位元組(轉換為double類型,相當於sizeof(double))