社区
C#
帖子详情
二进制交换位置,并输出的问题.
restartboy
2005-03-13 10:31:18
请教大家一个问题.
我从一个文件依次读出一个8字节的流.
怎么实现将他的二进制数据的位置改变.
比如我读出0x123456789abcdef
怎样将他的二进制数的第1位放到第58位,第2位放到第50位……第64位放到第7位,再以二进制输出。
谢谢。
...全文
170
12
打赏
收藏
二进制交换位置,并输出的问题.
请教大家一个问题. 我从一个文件依次读出一个8字节的流. 怎么实现将他的二进制数据的位置改变. 比如我读出0x123456789abcdef 怎样将他的二进制数的第1位放到第58位,第2位放到第50位……第64位放到第7位,再以二进制输出。 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
greenery
2005-03-19
打赏
举报
回复
呵呵,你还没有结贴吧?还没有收到你的分哦。
wanzhigang
2005-03-18
打赏
举报
回复
int sur=0x123;
string s=Convert.ToString(sur,2);//转换成二进制字符串
byte [] bs=Encoding.Default.GetBytes(s);//放入byte数组
Array.Reverse(bs);//反转byte数组元素
s=Encoding.Default.GetString(bs);//反转后的结果放入字符串
int tar=Convert.ToInt32(s,2);//转换为数值
MessageBox.Show(s+" "+tar.ToString());
restartboy
2005-03-17
打赏
举报
回复
greenery你的分加上去了吗。怎么我给了分这里还是显示0分阿。
greenery
2005-03-14
打赏
举报
回复
好,再写
byte x = 0xD4;
byte y = 0;
y = checkAndLink((x & 0x01) , 0x04) // 第1位放到第3位
| checkAndLink((x & 0x02) , 0x80) // 第2位放到第8位
| checkAndLink((x & 0x04) , 0x02) //第3位放到第2位
.....
byte checkAndLink(byte p_byOld, byte p_byOffset)
{
if (p_byOld > 0)
return p_byOffset;
else
return 0;
}
restartboy
2005-03-13
打赏
举报
回复
to:greenery
你这样好像不行吧.
你是从右边开始算的第一位吧.
如果这样的话,我的例子11010100 变换后应该是01011010
按照你的方法,比如((x & 0x04) & 0x02) 先是把第3位取出来,变成00000100,但是00000100和0x02与是得00000000啊,而不是00000010。
再帮忙想象吧。还是谢过:)
greenery
2005-03-13
打赏
举报
回复
byte x = 0xD4;
byte y = 0;
y = ((x & 0x01) & 0x04) // 第1位放到第3位
| ((x & 0x02) & 0x80) // 第2位放到第8位
| ((x & 0x04) & 0x02) //第3位放到第2位
.....
大概是这样,你看看可否?
restartboy
2005-03-13
打赏
举报
回复
比如二进制11010100
第1位放到第3位,第2位放到第8位,第3位放到第2位,第4位放到第6位,第5位放到第7位,第6位放到第1位,第7位放到第4位,第8位放到第5位.
就变成 10100101
xxuu503
2005-03-13
打赏
举报
回复
有逻辑关系么?没有逻辑关系的话,你就按最啰嗦的方法写
somedummy
2005-03-13
打赏
举报
回复
这个……
描述得很不清楚,无法推导你想要干什么……
xiongchen
2005-03-13
打赏
举报
回复
UP
restartboy
2005-03-13
打赏
举报
回复
我1个字节这样做是对的。
但8个字节就不行了。
我用的long类型
跟踪
类似1<<40这样位数移得比较多的是错的。
有什么解决方法吗?
restartboy
2005-03-13
打赏
举报
回复
谢谢greenery的启发
int[] IP = {3,8,2,6,7,1,4,5};
int x = 0xD4;
int y =0;
for(int i=0;i<=7;i++)
{
if(i<=IP[i])
{
y = y|((x&(1<<7-i))>>(IP[i]-i-1));
}
else
y = y|((x&(1<<7-i))<<(i-IP[i]+1));
}
Console.WriteLine("{0:X}",y);
(ps 我是从左边算的第一位)
另外我想问问在执行移位操作时,计算机是一位一位的加0,还是一下算出0的个数再一起加。我上边的算法都有点时延,这还是1个字节,如果变成8个字节,会不会慢很多。
Leetcode笔记 每日一题 693. 交替位
二进制
数 (22.03.28)
Leetcode 每日一题 693. 交替位
二进制
数 (22.03.28)
python
输出
二进制
数字_Python获取数字的
二进制
值
我们都知道在计算机中所有的信息最终都是以
二进制
的0和1来表示,而有些算法是通过操作bit位来进行运算的,这就需要我们了解Python中如何去表示
二进制
,又如何是进行位运算的。
二进制
的表示首先在Python中可以通过以"0b"或者"-0b"开头的字符串来表示
二进制
,如下所示由此可知我们用
二进制
表示的数字在打印之后会变成我们更为熟悉的十进制数,更容易被人理解。当我们需要看十进制数字的
二进制
表示时,可以...
python
输出
二进制
数_Python
二进制
表示和位操作
我们都知道在计算机中所有的信息最终都是以
二进制
的0和1来表示,而有些算法是通过操作bit位来进行运算的,这就需要我们了解Python中如何去表示
二进制
,又如何是进行位运算的。
二进制
的表示首先在Python中可以通过以"0b"或者"-0b"开头的字符串来表示
二进制
,如下所示print 0b101 #
输出
5print 0b10 #
输出
2print 0b111 #
输出
7print -0b101 ...
二进制
基础&JAVA I/O输入
输出
流
二进制
位运算 位运算的特殊用法 清零。与一个各位都为零的数值相与 取一个数中指定位。例:X=10101110,取X的低四位,用X&000 1111 = 0000 1110 两个变量
交换
值的方法:A= A^B;B=A^B;A=A^B;(A=A+B;B=A-B;A= A-B;) 原码&反码&补码 原码:一个证书按照绝对值大小转换成的
二进制
数称为原码。 ...
python
输出
二进制
数_Python获取数字的
二进制
值
我们都知道在计算机中所有的信息最终都是以
二进制
的0和1来表示,而有些算法是通过操作bit位来进行运算的,这就需要我们了解Python中如何去表示
二进制
,又如何是进行位运算的。
二进制
的表示首先在Python中可以通过以"0b"或者"-0b"开头的字符串来表示
二进制
,如下所示print 0b101 #
输出
5print 0b10 #
输出
2print 0b111 #
输出
7print -0b101 ...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章