500 与 755 这种权限字符串相与的算法

2015-07-02 11:48:04 +08:00
 123123

目前我能想到是把这两个每一位展开变成一个二进制数字,然后进行与操作再转换回来。

各位有什么更妙的算法吗?

1827 次点击
所在节点    问与答
9 条回复
zhjits
2015-07-02 11:50:46 +08:00
itoa(atoi("500")&atoi("755"))
Sunyanzi
2015-07-02 11:52:19 +08:00
首先这是八进制 ... 也就是对于 php 而言只要 decoct( 0500 & 0755 ) 就可以了 ...
123123
2015-07-02 11:53:41 +08:00
@zhjits 位操作基于二进制,单纯转换成 int 的话,500 跟 101000000 又不是等价的
mcone
2015-07-02 11:55:59 +08:00
八进制->十进制->与操作->转回八进制

不过这么做,不一定会比直接取出每一位取与操作要快……
123123
2015-07-02 11:57:38 +08:00
@zhjits 额,测试一下自己想多了,十进制下位操作结果没问题
imn1
2015-07-02 12:01:15 +08:00
看什么语言吧
例如PHP是可以直接字符串与运算的,但基准是字节对应数字,整数字符串转换为字节对应不难,直接去掉高四位就可以了(字符0的字节二进制是0011 0000)
123123
2015-07-02 12:01:17 +08:00
@mcone 8进制下直接进行位操作也没问题
exch4nge
2015-07-02 16:43:56 +08:00
@zhjits
@123123
十进制下位操作没问题?不是吧
123123
2015-07-02 18:15:25 +08:00
@exch4nge 目前的使用情况就是跟我主贴中说的展开后再位操作的结果相同

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/202712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX