将位转换为字节序列
给定一个 4 位大小的 Python 整数,如何通过按位算术而不是字符串处理将其转换为 4 个字节大小的整数,其中原始中的每一位对应一个字节,即该位重复了 8 次?
例如:0b1011
应变为 0b11111111000000001111111111111111
Given a Python integer which is within the size of 4 bits, how does one transform it – with bitwise arithmetic instead of string processing – into an integer within the size of 4 bytes, for which each bit in the original corresponds to a byte which is the bit repeated 8 times?
For example: 0b1011
should become 0b11111111000000001111111111111111
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
向 ncoghlan 致歉:
然后只需使用要转换的半字节索引此列表即可:
With apologies to ncoghlan:
Then just index this list with the nibble you want to transform:
我只想做一个循环:
I'd just do a loop:
以下递归解决方案仅使用加法、左/右移位运算符和按位 &整数运算符:
或者,作为单行:
示例:
The following recursive solution uses only addition, left/right shift operators and bitwise & operator with integers:
Or, as a one-liner:
Examples: