給定二進制的71744474
十進制,它是0100010001101011101111011010
我試圖從這個十進制中提取的是從低位開始的每七位。七位中的每一位都表示可打印的ASCII字符,只能有7位。總共我拉出四個字符。第一個字符是1011010
,它是ASCII碼爲Z
。下一個字符是w
依此類推。我想有一種方法可以掩蓋我關心一些事情的方式。屏蔽c中的不需要的位
4
A
回答
7
使用位運算符:
0100010001101011101111011010 & 0000000000000000000001111111 = 1011010
要獲得第二個字符,做
0100010001101011101111011010 & 0000000000000011111110000000
等..沿着這個線路
+1
但是,你如何在for循環中做到這一點,並保持掩碼移動來揭示新的位,並且你怎樣在每個時間掩蓋不同數量的位? – MarcusJ 2015-05-25 00:02:44
3
的東西應該足夠了:
#include <stdio.h>
int main (void) {
unsigned int value = 71184592; // Secret key :-)
for (unsigned int shift = 0; shift < 28; shift += 7)
printf ("%c", (value >> shift) & 0x7f);
putchar ('\n');
return 0;
}
It使用位移將所需的特定位轉換爲值的最低有效位7位,並使用位掩碼清除所有其他位。
如果您運行的代碼,你會看到它可以很愉快地提取單個ASCII字符中的每一個七位組:
Pax!
2
int myN = 71744474;
int mask = 0x7F7F7F7F; // 7F is 0111 1111, or 7 on bits.
int result = myN & mask;
char myBytes[4];
myBytes[0] = (char)((result & 0x000000FF);
myBytes[1] = (char)((result >> 8) & 0x000000FF);
myBytes[2] = (char)((result >> 16) & 0x000000FF);
myBytes[3] = (char)((result >> 24) & 0x000000FF);
// Now, examine myBytes[0-3], and I think they'll be what you want.
0
#include <stdio.h>
int main()
{
int a = 71744474;
a = a&0xFFFFFFF; // 1111111 1111111 1111111 1111111
while (a>0) {
char b = a&0x7f; // 1111111
printf("%c", b);
a = a>>7;
}
}
相關問題
- 1. 基數排序C++不屏蔽位
- 2. 位屏蔽混亂
- 3. 位屏蔽位寄存器
- 4. 需要屏蔽SQL中的加密字段
- 5. 屏蔽C中的位返回意外的結果
- 6. 密碼屏蔽不會在需要時終止程序
- 7. 我如何屏蔽位?
- 8. ImageMagick的屏蔽
- 9. TreePanel中屏蔽
- 10. 如何移位和屏蔽Lua中的整數位?
- 11. R中的屏蔽函數
- 12. 設定屏蔽%的
- 13. Android中的EditText中的屏蔽輸入
- 14. 要求輸入在屏蔽文本框
- 15. AS3的MovieClip屏蔽不工作[解決]
- 16. 屏蔽陣列:如何更改表示屏蔽值的符號
- 17. 屏蔽UIWebView
- 18. 如何屏蔽
- 19. Extjs在IE和FF中屏蔽和取消屏蔽
- 20. 屏蔽圖像不顯示在AS3中
- 21. JAR中需要/不需要的類需要/不需要類
- 22. 的OpenLayers 3圖像屏蔽
- 23. 屏蔽Android上的Drawable/Bitmap
- 24. 不需要的舍入C++
- 25. 屏蔽xlarge屏幕android
- 26. 屏蔽除最後四位之外的號碼的顯示。 Angularjs
- 27. 屏蔽節點中的敏感信息
- 28. 如何屏蔽CSS中的HTML標記?
- 29. IOS。屏蔽網址中的符號
- 30. CORS屏蔽a幀中的圖像
在辦理位。你應該以十六進制值爲例。所以它會非常容易理解。 – kapilddit 2012-10-16 14:20:11