2013-04-07 157 views
0

更新: 我可以很容易地從字節到整數,但目前我這樣做的方式似乎沒有工作得那麼好。將整數轉換爲字符數組(字節)

這裏是我當前的代碼:

static unsigned char* Int32ToBytes(signed int n) 
{ 
    unsigned char bytes[4]; 
    for(int i = 0;i<4;i++) 
     bytes[3-i] = (n & (255 << (i*8))) >> (i*8); 
    return bytes; 
} 

我使用這個寫字節:

fwrite(Int32ToBytes(-1), 1 , 4 , file); 

它的輸出:FB 9C 8B 28時,我希望它輸出FF FF FF FF(簽署整數)。

任何想法?幫助表示讚賞:)

+0

是不是應該像字節[3-i] = n&(255 <<(i * 8))? – marcadian 2013-04-07 02:37:54

+0

IDK的,這就是爲什麼我在這裏問的xD在做,我得到了0℃1C C7 46 – user1594121 2013-04-07 02:40:06

+0

我錯過了一些東西,試試這個字節[3-i] =(N(255 << (i*8))) >>(I * 8)。順便說一句什麼語言是您使用? – marcadian 2013-04-07 02:45:22

回答

0

這似乎爲我工作 http://ideone.com/o6Llf9

void process(int x) 
{ 
    for(int i = 0;i<4;i++) 
    { 
     unsigned char res = (x & (255 << (i*8))) >> (i*8); 
     printf("%x " ,res); 
    } 
} 

int main() 
{ 
    int n; 
    while (scanf("%d",&n)!=EOF) process(n); 
    return 0; 
} 

這樣的事情也將工作

for(int i = 0;i<4;i++) 
{ 
    bytes[3-i] = n & 255 
    n = n >> 8 
} 
0

www.cplusplus.com/reference/cstdlib/itoa/ 它將int轉換爲char。例如: int test; char buffer[33]; itoa(test, buffer, 10)。你需要包含stdlib.h。

+0

轉移好嗎它支持符號和無符號?你怎麼了STR轉換爲4個字節的字符數組長時間? – user1594121 2013-04-07 03:15:04

+0

它應該支持無/有符號整數,我想這個問題是對的區別如何將int轉換爲char?無論如何,我假設你正在談論一個std :: string對象,請澄清你的問題。 – refi64 2013-04-07 03:40:30

相關問題