如何在C截斷地址
回答
uintptr_t rounded = ((uintptr_t)start) & ~0xF;
最好的解決方案。 *嚴格地說*讀取OP的問題,你應該可能需要'(((uintptr_t)start) - 1)&〜0x0F'(啊 - 需要將'start'強制轉換爲字符類型,然後直接減1?) – usr2564301
非常感謝! – user2817587
假設void *address
包含您的原文地址:
unsigned long int multiple = (unsigned long int)address/16;
void *new_address = (void*)(16 * multiple;)
除以16會給你的積分值。
@ user2817587,我建議你使用這個而不是'int'。改用unsigned long。地址總是無符號的,這種轉換很可能會導致錯誤的地址。在C++中,你可以使用size_t。 – DNT
'int'可能太小而不能容納指針。 – Kevin
@DNT:更新..忘了標誌..和大小是一個錯誤.. – brokenfoot
uintptr_t x = ((uintptr_t)addr) & ~((1 << 4) - 1);
需要注意的是(從C99)一個uintptr_t的是無符號整數保證大到足以容納你的平臺上的指針。
位移位最低的4位(16的倍數)。
- 1. Ruby編程:如何截斷IP地址?
- 2. 截斷在C#
- 3. 如何在Visual C++中截斷文件?
- 4. 如何在C#中截斷列表?
- 5. C# - 在位置後截斷
- 6. 如何截斷在.NET
- 7. Rails用'。'截斷參數在網址
- 8. 如何使用C#截斷表格#
- 9. 截斷ASP.NET MVC C#
- 10. 如何截斷wp_rss
- 11. LLDB在地址中斷
- 12. 如何不斷變化的IP地址
- 13. 我想截斷地址線2到10個字符
- 14. URL在不同的地方被截斷
- 15. C#Process.Start參數截斷
- 16. 截斷通過用C
- 17. Obj C - 字行截斷
- 18. C++數字截斷錯誤
- 19. C#截斷CSV文件#
- 20. 截斷數據列C#
- 21. c#日誌文件截斷
- 22. 司長被截斷 - Visual C
- 23. C++截斷對iostream類
- 24. Applescript:截斷的供稿網址
- 25. 如何在SSIS中動態地截斷OLEDB DESTINATION中的數據?
- 26. 截斷在Java
- 27. 截斷在golang
- 28. 如何從截斷的表
- 29. 如何截斷HWND標題
- 30. 如何截斷CGFloat值?
類似於(uintptr_t)start&〜0xfU'? – twalberg
更少或更少或相等?你想要一個已經以四個零位結束的地址0x123F0? – usr2564301