6
A
回答
1
最簡單可行的方法 - 用sprintf(或snprintf的,如果你有的話):
unsigned char a[SOMESIZE]
int n = 1234;
sprintf(a, "%d", n);
或者,如果你想讓它存儲在二進制:
unsigned char a[sizeof(int) ];
int n = 1234;
memcpy(a, & n, sizeof(int));
0
警告:未經測試的代碼。
這應該是一個排序不可知的轉換。它從低到高。可能有更有效的方法來做到這一點,但目前我想不起來。
#include <limits.h> // CHAR_BIT, UCHAR_MAX
int num = 68465; // insert number here
unsigned char bytes[sizeof(int)];
for (int i=0; i<sizeof(int); i++)
{
bytes[i] = num & UCHAR_MAX;
num >>= CHAR_BIT;
}
我發佈這個主要是因爲我沒有看到另一個解決方案,其中結果不會改變,取決於你的處理器是什麼endianness。
+0
但是也許用戶希望它們改變 - 以保持與原始int相同的字節順序。此外,您的數組大小和循環控制計算是錯誤的。 – 2010-08-10 10:38:48
7
或者,如果你知道你在做什麼:
int n = 12345;
char* a = (char*)&n;
0
我理解這個問題作爲一個數轉換爲字符串表示(如尼爾一樣)。
下面是一個不使用lib的簡單方法。
int i = 0;
int j = 0;
do {a[i++] = '0'+n%10; n/=10;} while (n);
a[i--] = 0;
for (j<i; j++,i--) {int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}
的問題可能需要一些澄清,別人顯然明白你就想爲int的內部表示所使用的基礎字節(但如果你想要做的事情,你最好使用定義的一些固定大小類型而不是int,否則你將無法確定字節數組的長度)。
1
這可能是工作
int n=1234;
const int arrayLength=sizeof(int);
unsigned char *bytePtr=(unsigned char*)&n;
for(int i=0;i<arrayLength;i++)
{
printf("[%X]",bytePtr[i]);
}
採取的依賴於字節序
相關問題
- 1. 將字節數組轉換爲int
- 2. PHP將字節數組轉換爲int
- 3. 將int轉換爲字節數組BufferOverflowException
- 4. 將字節數組轉換爲C中的Int-likes#
- 5. 將字節數組轉換爲xamarin pcl c中的int#
- 6. C++將int轉換爲字符數組?
- 7. 將字節數組轉換爲int數組中的錯誤#
- 8. 將int數組轉換爲Golang中的字節數組
- 9. 將C#字節數組轉換爲C++
- 10. 轉換字節數組INT
- 11. 將字節[]轉換爲int
- 12. 將C#字節數組轉換爲VB.NET
- 13. C:將字節數組轉換爲struct
- 14. INT轉換爲一個字節數組
- 15. int轉換爲BCD字節數組
- 16. int轉換爲BCD字節數組
- 17. 轉換字節數組爲一個int數組在C
- 18. 將NSData轉換爲base64encoded並將字節數組轉換爲C#
- 19. 將int轉換爲java中的字節
- 20. 如何將字節數組轉換爲int數組?
- 21. 在C中將字符串數組轉換爲Int數組#
- 22. 如何將struct數組轉換爲c#中的字節數組?
- 23. 如何將字節數組轉換爲C#中的雙數組?
- 24. int轉換爲4字節字符數組(C)
- 25. 在SSAS中將字節轉換爲Int
- 26. C#轉換字節數組爲int總是相同數量
- 27. C#將字節字符串轉換爲字節數組
- 28. Java - 將int轉換爲4字節的Byte數組?
- 29. 將int轉換爲不同大小的字節數組
- 30. 將int轉換爲兩個字節的數組
警告井井有條:'memcpy'會產生不可預知的行爲,如果你不考慮字節序。 – Zarel 2010-08-10 10:11:56
@Zarel結果將完全可預測,但可能不需要。 – 2010-08-10 10:13:00
「不可預知」,因爲除非您知道運行它的處理器的字節序,否則您將無法預測結果。 – Zarel 2010-08-10 10:17:44