欢迎光临散文网 会员登陆 & 注册

用魔法数字2559将字符串转成整型

2018-07-10 18:13 作者:九条可怜酱  | 我要投稿

编程中字符串转整型有很多种方法,现在要介绍一种黑科技方法(虽然没什么卵用)

不过这个方法只对2字符和3字符的字符串有效,在C/C++中比较好使。

2字符版本:(*(short *)"AB" & 0xf0f) * 2569 2559 == A*10+B
3字符版本:(*(int *)"ABC" 0xf0f0f) * 2659 % 2559 == A*100+B*10+C

(以上A,B,C都是0到9的数字)

数学原理如下:

首先(*(short *)"AB" & 0xf0f)可以得到A+B*256,然后

  (A+B*256)*2569%2559

=(A*2569+B*256*2569)%2559

=(A*(2569%2559)+B*(256*2569%2559))%2559

=(A*10+B)%2559

 ∵0A*10+B<2559

 ∴(A*10+B)%2559=A*10+B

3字符版本的证明同理。


以上是个人发呆时的产物


用魔法数字2559将字符串转成整型的评论 (共 条)

分享到微博请遵守国家法律