能力值:
( LV7,RANK:110 )
|
-
-
2 楼
#include <windows.h>
int main(int argc, char* argv[])
{
char rng[32]={0x6B,0x6B,0x6B,0x6B, \
0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B, \
0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B, \
0x6B,0x6B,0x00,0x10,0x00,0x00,0x03,0xF0};
*(BYTE*)(rng+31) += 0x1;
printf("Hello World!%s\n", rng);
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不是在window平台上的,不能加window.h哦
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
求大神们给个思路或程序被,要能处理溢出,如0xFF进位的,谢谢
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
[QUOTE=时光飞逝;1364477]各位大神,我有一个随机未知的32字节的char数组,想请问一下如何进行加1操作?比如说:
char rng[32]={0x6B,0x6B,0x6B,0x6B, \
0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B, \...[/QUOTE]
首先你的rng要是unsigned char,因为c里面signed整数的溢出行为是没有定义的,而char本身没有规定是unsigned还是signed,所以这样写会有可能导致未定义的行为。然后就可以任性的使用c++11了
bool carry(true);
std::for_each(rng, rng+32, [&](unsigned char& v){
if(carry){
carry = (v+=carry) == 0;
}
});
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
没看懂呀,大神,能用C来写么,还有就是,rng是unsigned char,这个能用大数加法来处理么,请指教,谢谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
不要沉,不要沉~~~~~~~···········
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
这个叫128bit加法,度娘一下就知道
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
昨天分析了一下问题,现在倒腾出来了,谢谢各位的宝贵意见!
|