我想使用英特爾方法來計算文件Crc(在C++中)。我發現這個http://create.stephan-brumme.com/crc32/(由8切成)。但是這個實現在int中返回了crc32,但是我想像在某些庫(例如cryptopp)中那樣在unsigned char [4]中獲得crc32。任何想法我怎麼能做到這一點? 問候CRC32英特爾實施
0
A
回答
2
您將您的INT成字節,例如,像這樣:
void Uint2Uchars(unsigned char* buf, unsigned int n)
{
memcpy(buf, &n, sizeof n);
}
或者,如果你有興趣在一個特定的字節序,你可以這樣做:
void Uint2UcharsLE(unsigned char* buf, unsigned int n)
{
size_t i;
for (i = 0; i < sizeof n; i++)
{
buf[i] = n;
n >>= CHAR_BIT;
}
}
或
void Uint2UcharsBE(unsigned char* buf, unsigned int n)
{
size_t i;
for (i = 0; i < sizeof n; i++)
{
buf[sizeof n - 1 - i] = n;
n >>= CHAR_BIT;
}
}
不要忘記包含適當的標題,如適用,可以使用和<limits.h>
。
2
像這樣的東西,你可以轉換,但是這取決於小/ big endian和有多大你的整數都是。
#pragma pack(1)
#include <cstdint>
typedef union
{
char crc4[4];
uint32_t crc32;
} crc;
crc.crc32 = yourcrc();
crc.crc4[0...3]
0
小端
int i = crc();
unsigned char b[4];
b[0] = (unsigned char)i;
b[1] = (unsigned char)(i >> 8);
b[2] = (unsigned char)(i >> 16);
b[3] = (unsigned char)(i >> 24);
大端簡單的代碼只是另一種方式圓
int i = crc();
unsigned char b[4];
b[3] = (unsigned char)i;
b[2] = (unsigned char)(i >> 8);
b[1] = (unsigned char)(i >> 16);
b[0] = (unsigned char)(i >> 24);
0
假設你的int是32位:
unsigned int i = 0x12345678;
小尾數:
char c2[4] = {(i>>24)&0xFF,(i>>16)&0xFF,(i>>8)&0xFF,(char)i};
大端:
char* c = (char*)&i;
//or if you need a copy:
char c1[4];
memcpy (c1,&i,4);
//or the same as little endian but everything reversed
相關問題
- 1. Atomic int錯誤地遞增?英特爾TBB實施
- 2. 英特爾實感Java支持
- 3. 英特爾實感 - 開發工具
- 4. 英特爾Xdk後端實現
- 5. 英特爾TBB和Cilk Plus線程親和力英特爾MIC
- 6. 特質實施
- 7. 英特爾XDK FILETRANSFER錯誤
- 8. 英特爾TBB許可證
- 9. 英特爾IOT與PLC
- 10. 英特爾IA-32大會
- 11. StartAR方法英特爾XDK
- 12. ZGEMM英特爾的MIC
- 13. 英特爾IPP ippsFree()崩潰
- 14. 英特爾Fortran損壞DLL
- 15. 英特爾XDK框架
- 16. 英特爾TBB:圖形池
- 17. 英特爾GMA 4500HD&vsync
- 18. 英特爾彙編優化
- 19. 英特爾8086處理器
- 20. 英特爾標準庫(C++)
- 21. 哈斯克爾hGetLines實施
- 22. 與英特爾伽利略gen2的英特爾xdk守護進程
- 23. 什麼是英特爾®安裝和配置軟件(英特爾®SCS)
- 24. 我如何安裝英特爾編譯器和英特爾mpi的提升?
- 25. 哈斯克爾 - 實施和實例
- 26. 加速度計與VS 2015中的英特爾實感對比
- 27. 提高準確度英特爾實感語音識別
- 28. 實施互聯網的希爾伯特地圖
- 29. 蘋果斯威夫特辛格爾頓實施
- 30. 我不能安裝英特爾haxm
重要的一點是你是否想用big endian和little endian順序的字節數。你知道嗎? – john 2013-03-20 13:12:37
有什麼區別?你能告訴我怎麼用這兩種方法嗎?然後我可以計算CryptoPP中的crc,並比較結果 – januszmk 2013-03-20 13:19:12