C# byte的高四位和低四位

时间:2021-03-23 20:40:33
我有一个两位数,怎么把这个两位数的第一位赋给一个byte的高四位,第二位赋给低四位。。最后还要把这高四位和低四位加起来···组成一个byte类型返回··请问怎么搞?
怎么弄啊?
大侠们,给个例子啊···

49 个解决方案

#1



int x=2,y=0xA;//x,y就是那两个数,都要小于16
byte result=(byte)(x*16+y);//result=0x2A

应该就是个数学关系吧

#2


BitConverter.GetBytes()

C# byte的高四位和低四位

#3


引用 1 楼 leafmao 的回复:
C# code?12int x=2,y=0xA;//x,y就是那两个数,都要小于16byte result=(byte)(x*16+y);//result=0x2A
应该就是个数学关系吧


不好意思,看错题了,重新写

int x=21;
byte result=(byte)((x/10)*16+x%10);//result=0x21

#4


BitConverter.GetBytes(你的数值)

#5


比如 我现在是这样的:
byte 密码 = 98;
密码1(9)+密码2(8)(高4位是密码1,低4位是密码2)
这样的话 怎么弄?

#6


引用 2 楼 SocketUpEx 的回复:
BitConverter.GetBytes()


比如 我现在是这样的:
byte 密码 = 98;
密码1(9)+密码2(8)(高4位是密码1,低4位是密码2)
这样的话 怎么弄?

#7


引用 3 楼 leafmao 的回复:
引用 1 楼 leafmao 的回复:C# code?12int x=2,y=0xA;//x,y就是那两个数,都要小于16byte result=(byte)(x*16+y);//result=0x2A
应该就是个数学关系吧

不好意思,看错题了,重新写
C# code?12int x=21;byte result=(byte)((x/10)*16+x%10);/……




比如 我现在是这样的:
byte 密码 = 98;
密码1(9)+密码2(8)(高4位是密码1,低4位是密码2)
这样的话 怎么弄?

#8



int a =423;//假定3位数,取出23
byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010
byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011
byte result = ShiWei<<4;//十位数左移4位,00100000
result = result|GeWei//与个位数相或,00100011
Console.WriteLine(result.ToString()); //输出35

#9


错了错了
我又错了
楼主说得是一个字节的4位
我搞成了Byte[4]了

C# byte的高四位和低四位

#10


引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移4位,0010000……


引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移4位,0010000……


比如 我现在是这样的:
byte 密码 = 98;
密码1(9)+密码2(8)(高4位是密码1,低4位是密码2)
这样的话 怎么弄?
急急急··详细点··谢谢谢谢谢谢···

#11


引用 9 楼 SocketUpEx 的回复:
错了错了
我又错了
楼主说得是一个字节的4位
我搞成了Byte[4]了


给点思路啊··

#12


引用 10 楼 yuekunge 的回复:
引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移……


我代码不就是这个意思吗,你认真看没有

#13


引用 7 楼 yuekunge 的回复:
引用 3 楼 leafmao 的回复:引用 1 楼 leafmao 的回复:C# code?12int x=2,y=0xA;//x,y就是那两个数,都要小于16byte result=(byte)(x*16+y);//result=0x2A
应该就是个数学关系吧

不好意思,看错题了,重新写
C# code?12int x=21;byte result=(byte……

一样的呀。。。你改下数字不就好啦

byte code=98;
byte result=(byte)(code/10*16+code%10);//result=0x98

#14


- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位

#15


引用 14 楼 leafmao 的回复:
- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位



一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

#16


引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移4位,0010000……



byte result = ShiWei<<4;
这返回的不是一个byte类型吧?
C# 里面不是的啊··

#17


引用 16 楼 yuekunge 的回复:
引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移……

这是位移,可以这样子的。

#18


引用 17 楼 wyd1520 的回复:
引用 16 楼 yuekunge 的回复:引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000……


result = result|GeWei//与个位数相或,00100011
这句是什么意思? 相加?

#19


引用 18 楼 yuekunge 的回复:
引用 17 楼 wyd1520 的回复:
引用 16 楼 yuekunge 的回复:引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为b……

是的,等同于相加

#20


引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··


被你打败,代码我已经给了呀。。。。看13楼。。。我都已经给两次了,你只要改下byte code的值就行了,result就是重新生成的byte。
弱弱问句,楼主有没有学过16进制--

#21


引用 20 楼 leafmao 的回复:
引用 15 楼 yuekunge 的回复:引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

被你打败,代码我已经给了呀。。。。看13楼。。。我都已经给两次了,你只要改下byte c……



你和8楼的有区别么?
我才学这个没多久···16进制的还不怎么了解··所有··· C# byte的高四位和低四位

#22


引用 20 楼 leafmao 的回复:
引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

被你打败,代码我已经给了呀。。。。看13楼。。。我都已经给两次了,你只要改下byte code的值就行了,re……


那还弄byte高低位这种高级东西啊?

#23


引用 22 楼 mq2003hwj 的回复:
引用 20 楼 leafmao 的回复:引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

被你打败,代码我已经给了呀。。。。看13楼。……


  我也不想啊 我日·
     调用C的dll 方法里的说明就是这样的撒··
他是这样的:
字节8 XX 密码1+密码2(高4位是密码1,低4位是密码2)
字节9 XX 密码3+密码4(高4位是密码3,低4位是密码4)
字节10 XX 密码5+密码6(高4位是密码5,低4位是密码6)如果4位密码,此字节为0xFF。
明白了嘛?

#24


引用 23 楼 yuekunge 的回复:
引用 22 楼 mq2003hwj 的回复:
引用 20 楼 leafmao 的回复:引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

被你打败,代码我已经给……


楼主呀,初学者不要这样口气。要不然得不到别人的帮助。现在给你一个最容易理解的方法
条件你得知道二进制是怎么回事,假如你知道,那请看下边,不知道,就自己问度娘

一个字节是有8位等同于二进制00000000 ---- 11111111 
高4位就是前面的4个 (1111) 低4就是后(1111)
假如一个值10000011 他的高4位为1000,低四位为0011 变成数值就是8 ,3 
所以最直接的方法就是把每个字节都转成二进制后,按上面的方法 再把高4,低4的二进制转成数值,就是你想要的结果了

#25


引用 24 楼 wyd1520 的回复:
引用 23 楼 yuekunge 的回复:引用 22 楼 mq2003hwj 的回复:
引用 20 楼 leafmao 的回复:引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码……


欧  sorry  对于我的口气  我对你说声 抱歉哈··sorry  
  你热心的回答对我帮助很大··
  谢了···

#26


撸主,很容易的
byte temp=0x12;
string byteString=Convert.ToString(temp, 16);
if(byteString.Length==2)
{
    //高字节
    int gao=Convert.ToInt32(byteString.Substring(0,1));
    //低
    int gao=Convert.ToInt32(byteString.Substring(1,1));
}

#27


引用 26 楼 chenandczh 的回复:
撸主,很容易的
byte temp=0x12;
string byteString=Convert.ToString(temp, 16);
if(byteString.Length==2)
{
    //高字节
    int gao=Convert.ToInt32(byteString.Substring(0,1));
    //低
    int ……


大哥 求详解···

#28


引用 27 楼 yuekunge 的回复:
引用 26 楼 chenandczh 的回复:撸主,很容易的
byte temp=0x12;
string byteString=Convert.ToString(temp, 16);
if(byteString.Length==2)
{
    //高字节
    int gao=Convert.ToInt32(byteString.Substring(0,……


...源代码都有了

#29


int n = 98;
string str = Convert.ToString(n, 2);            
byte by = Convert.ToByte(str,2);你就是想把两位整数存成字节形式吧,这样98就变成字节形式了0x98了,高4位是1001,低4位是1000

#30


byte n=98;

var 高位=(n&240)>>4
var 低位=(n&15)<<4

#31



byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦
byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够详细了吧--

code/10得到的是code的十位,在这个例子里就是9,为什么乘以16呢,因为要把它变成byte的高4位,比如一个十六进制的数0X10,等于十进制的16,那么十六进制的0x90就等于9*16;code%10取的是code的个位。
建议楼主还是去了解下byte的高四位和低四位是怎么回事吧,把它看成十六进制就好办多了

#32


code/10得到的是code的十位,在这个例子里就是9,为什么乘以16呢,因为要把它变成byte的高4位,比如一个十六进制的数0X10,等于十进制的16,那么十六进制的0x90就等于9*16;code%10取的是code的个位。
这种方法不错

#33


首先向右移若干位得到第一个包含高位字节的变量,再把原两位数字左移若干位再右移若干位得到低位字节,再把这两个变量相加。

#34


引用 31 楼 leafmao 的回复:
C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够详细了吧--
code/10得到的是code的十位,在这个例子里就是9,为什么乘以16呢,因为要把它变成byte的高4位……


如果 code 是00怎么办?

#35


http://msdn.microsoft.com/zh-cn/library/5bdb6693(v=VS.80).aspx
撸主,不用多考虑了。
1.如果要技巧或者算法,你可以照搬。
2.如果你知道该数据类型的本质,有点编程的基础,完全可以以自己的方式弄出你想要的结果。

如果撸主不想多动脑,就继续在这里等完整答案吧。

#36


引用 35 楼 chenandczh 的回复:
http://msdn.microsoft.com/zh-cn/library/5bdb6693(v=VS.80).aspx
撸主,不用多考虑了。
1.如果要技巧或者算法,你可以照搬。
2.如果你知道该数据类型的本质,有点编程的基础,完全可以以自己的方式弄出你想要的结果。

如果撸主不想多动脑,就继续在这里等完整答案吧。


。。。。。。。。。。。。。。。。。。。。。
我其实只是想问哈 这个答案和8楼的有啥区别而已···

#37


这个问题很简单  取十位数的数值9 付给byte类型变量bValue1 二进制表示 0000 1001

 然后 bValue1左移4位,移动到高4位获得bValue12 二进制表示  10010000, 取个位数值8 赋值给 byte 类型 变量 bValue3 二进制表示 00001000 ,个位直接保存在了低四位。  bValue12、 bValue3  相加的到楼主需要的结果  
1001 1000   原理就是这样子
代码 
 byte bValue1 = 9;
 bValue2 =  bValue1 <<4;
 byte bValue3 = 8;
 byte result = bValue2  + bValue3;


#38


引用 34 楼 yuekunge 的回复:
引用 31 楼 leafmao 的回复:C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够详细了吧--
code/10得到的是code的十位,在这个例子里就是9,为什么乘……


是00的话那得到的就是0x00;你都不自己试下的吗
目测楼上已经有好几个答案了,但是楼主一点脑筋都不想动,是不是要大家从00一直到99写100个例子给你呀。。。。

#39


引用 37 楼 youngmumu 的回复:
这个问题很简单  取十位数的数值9 付给byte类型变量bValue1 二进制表示 00001001

 然后 bValue1左移4位,移动到高4位获得bValue12 二进制表示 10010000, 取个位数值8 赋值给 byte 类型 变量 bValue3 二进制表示 00001000 ,个位直接保存在了低四位。  bValue12、 bValue3  相加的到楼……


嗯嗯 我知道 你这个和八楼一样··
  谢谢你

#40


引用 38 楼 leafmao 的回复:
引用 34 楼 yuekunge 的回复:引用 31 楼 leafmao 的回复:C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够详细了吧--
code/10得到的是c……

答案多有啥用 
  没搞懂原理  只要答案我发个帖子闹锤子啊···

#41


引用 40 楼 yuekunge 的回复:
引用 38 楼 leafmao 的回复:引用 34 楼 yuekunge 的回复:引用 31 楼 leafmao 的回复:C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够……


跪了,你不思考,别人就是给你讲一千遍原理你也是不懂
我提供的方法在31楼已经进行了很详细的说明,你要是还看不懂。。。。。那。。。。还是。。。。

#42


引用 41 楼 leafmao 的回复:
引用 40 楼 yuekunge 的回复:引用 38 楼 leafmao 的回复:引用 34 楼 yuekunge 的回复:引用 31 楼 leafmao 的回复:C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result……



谢了   
问题不在于答案是什么··
但是 还是要谢谢你的耐心讲解哦··
我知道你和八楼的结果都是一样的··
   我只是问哈你和她的区别是什么··
 我并没说 我没懂撒··只是请教你 你这周思考的区别在那、?
sorry······

#43


好吧,区别在于8楼的是位运算,我用的方法是算术运算
将一个数左移4位,意思是将一个数的二进制表示左移4位,相当于乘以16
你可以去了解下2进制和16进制
比如一个数为1,左移4位,表示成二进制的byte类型就是0001 0000,表示成十进制就是16,表示成十六进制就是0x10.

#44


引用 43 楼 leafmao 的回复:
好吧,区别在于8楼的是位运算,我用的方法是算术运算
将一个数左移4位,意思是将一个数的二进制表示左移4位,相当于乘以16
你可以去了解下2进制和16进制
比如一个数为1,左移4位,表示成二进制的byte类型就是0001 0000,表示成十进制就是16,表示成十六进制就是0x10.

谢谢!!!!!! C# byte的高四位和低四位

#45


楼主好奇葩,编程竟然还能不懂16进制?!?!

#46


引用 45 楼 yuandonghuia 的回复:
楼主好奇葩,编程竟然还能不懂16进制?!?!


是呀 是呀·
  不懂呀··
你懂完了呀?
  什么是!@##@¥#@¥@#¥按 ?

#47


我也想知道这个问题,请指教

#48


引用 47 楼 dulei0915 的回复:
我也想知道这个问题,请指教


那你更奇葩····

#49


该回复于2012-12-13 08:56:20被管理员删除

#1



int x=2,y=0xA;//x,y就是那两个数,都要小于16
byte result=(byte)(x*16+y);//result=0x2A

应该就是个数学关系吧

#2


BitConverter.GetBytes()

C# byte的高四位和低四位

#3


引用 1 楼 leafmao 的回复:
C# code?12int x=2,y=0xA;//x,y就是那两个数,都要小于16byte result=(byte)(x*16+y);//result=0x2A
应该就是个数学关系吧


不好意思,看错题了,重新写

int x=21;
byte result=(byte)((x/10)*16+x%10);//result=0x21

#4


BitConverter.GetBytes(你的数值)

#5


比如 我现在是这样的:
byte 密码 = 98;
密码1(9)+密码2(8)(高4位是密码1,低4位是密码2)
这样的话 怎么弄?

#6


引用 2 楼 SocketUpEx 的回复:
BitConverter.GetBytes()


比如 我现在是这样的:
byte 密码 = 98;
密码1(9)+密码2(8)(高4位是密码1,低4位是密码2)
这样的话 怎么弄?

#7


引用 3 楼 leafmao 的回复:
引用 1 楼 leafmao 的回复:C# code?12int x=2,y=0xA;//x,y就是那两个数,都要小于16byte result=(byte)(x*16+y);//result=0x2A
应该就是个数学关系吧

不好意思,看错题了,重新写
C# code?12int x=21;byte result=(byte)((x/10)*16+x%10);/……




比如 我现在是这样的:
byte 密码 = 98;
密码1(9)+密码2(8)(高4位是密码1,低4位是密码2)
这样的话 怎么弄?

#8



int a =423;//假定3位数,取出23
byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010
byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011
byte result = ShiWei<<4;//十位数左移4位,00100000
result = result|GeWei//与个位数相或,00100011
Console.WriteLine(result.ToString()); //输出35

#9


错了错了
我又错了
楼主说得是一个字节的4位
我搞成了Byte[4]了

C# byte的高四位和低四位

#10


引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移4位,0010000……


引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移4位,0010000……


比如 我现在是这样的:
byte 密码 = 98;
密码1(9)+密码2(8)(高4位是密码1,低4位是密码2)
这样的话 怎么弄?
急急急··详细点··谢谢谢谢谢谢···

#11


引用 9 楼 SocketUpEx 的回复:
错了错了
我又错了
楼主说得是一个字节的4位
我搞成了Byte[4]了


给点思路啊··

#12


引用 10 楼 yuekunge 的回复:
引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移……


我代码不就是这个意思吗,你认真看没有

#13


引用 7 楼 yuekunge 的回复:
引用 3 楼 leafmao 的回复:引用 1 楼 leafmao 的回复:C# code?12int x=2,y=0xA;//x,y就是那两个数,都要小于16byte result=(byte)(x*16+y);//result=0x2A
应该就是个数学关系吧

不好意思,看错题了,重新写
C# code?12int x=21;byte result=(byte……

一样的呀。。。你改下数字不就好啦

byte code=98;
byte result=(byte)(code/10*16+code%10);//result=0x98

#14


- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位

#15


引用 14 楼 leafmao 的回复:
- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位



一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

#16


引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移4位,0010000……



byte result = ShiWei<<4;
这返回的不是一个byte类型吧?
C# 里面不是的啊··

#17


引用 16 楼 yuekunge 的回复:
引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000011byte result = ShiWei<<4;//十位数左移……

这是位移,可以这样子的。

#18


引用 17 楼 wyd1520 的回复:
引用 16 楼 yuekunge 的回复:引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为byte,00000……


result = result|GeWei//与个位数相或,00100011
这句是什么意思? 相加?

#19


引用 18 楼 yuekunge 的回复:
引用 17 楼 wyd1520 的回复:
引用 16 楼 yuekunge 的回复:引用 8 楼 mq2003hwj 的回复:
C# code?123456int a =423;//假定3位数,取出23byte ShiWei = (byte)((a/10)%10); //得到十位数2,转化为byte,00000010byte GeWei = (byte)(a%10);//得到个位数3,转化为b……

是的,等同于相加

#20


引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··


被你打败,代码我已经给了呀。。。。看13楼。。。我都已经给两次了,你只要改下byte code的值就行了,result就是重新生成的byte。
弱弱问句,楼主有没有学过16进制--

#21


引用 20 楼 leafmao 的回复:
引用 15 楼 yuekunge 的回复:引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

被你打败,代码我已经给了呀。。。。看13楼。。。我都已经给两次了,你只要改下byte c……



你和8楼的有区别么?
我才学这个没多久···16进制的还不怎么了解··所有··· C# byte的高四位和低四位

#22


引用 20 楼 leafmao 的回复:
引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

被你打败,代码我已经给了呀。。。。看13楼。。。我都已经给两次了,你只要改下byte code的值就行了,re……


那还弄byte高低位这种高级东西啊?

#23


引用 22 楼 mq2003hwj 的回复:
引用 20 楼 leafmao 的回复:引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

被你打败,代码我已经给了呀。。。。看13楼。……


  我也不想啊 我日·
     调用C的dll 方法里的说明就是这样的撒··
他是这样的:
字节8 XX 密码1+密码2(高4位是密码1,低4位是密码2)
字节9 XX 密码3+密码4(高4位是密码3,低4位是密码4)
字节10 XX 密码5+密码6(高4位是密码5,低4位是密码6)如果4位密码,此字节为0xFF。
明白了嘛?

#24


引用 23 楼 yuekunge 的回复:
引用 22 楼 mq2003hwj 的回复:
引用 20 楼 leafmao 的回复:引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码的··
    项目不能卡在这啊··

被你打败,代码我已经给……


楼主呀,初学者不要这样口气。要不然得不到别人的帮助。现在给你一个最容易理解的方法
条件你得知道二进制是怎么回事,假如你知道,那请看下边,不知道,就自己问度娘

一个字节是有8位等同于二进制00000000 ---- 11111111 
高4位就是前面的4个 (1111) 低4就是后(1111)
假如一个值10000011 他的高4位为1000,低四位为0011 变成数值就是8 ,3 
所以最直接的方法就是把每个字节都转成二进制后,按上面的方法 再把高4,低4的二进制转成数值,就是你想要的结果了

#25


引用 24 楼 wyd1520 的回复:
引用 23 楼 yuekunge 的回复:引用 22 楼 mq2003hwj 的回复:
引用 20 楼 leafmao 的回复:引用 15 楼 yuekunge 的回复:
引用 14 楼 leafmao 的回复:- -楼主,这就是个数学运算呀,先取出十进制的十位和个位,然后分别赋给十六进制(byte)的高位和低位


一时间看明白··
  能不能给点什么伪代码……


欧  sorry  对于我的口气  我对你说声 抱歉哈··sorry  
  你热心的回答对我帮助很大··
  谢了···

#26


撸主,很容易的
byte temp=0x12;
string byteString=Convert.ToString(temp, 16);
if(byteString.Length==2)
{
    //高字节
    int gao=Convert.ToInt32(byteString.Substring(0,1));
    //低
    int gao=Convert.ToInt32(byteString.Substring(1,1));
}

#27


引用 26 楼 chenandczh 的回复:
撸主,很容易的
byte temp=0x12;
string byteString=Convert.ToString(temp, 16);
if(byteString.Length==2)
{
    //高字节
    int gao=Convert.ToInt32(byteString.Substring(0,1));
    //低
    int ……


大哥 求详解···

#28


引用 27 楼 yuekunge 的回复:
引用 26 楼 chenandczh 的回复:撸主,很容易的
byte temp=0x12;
string byteString=Convert.ToString(temp, 16);
if(byteString.Length==2)
{
    //高字节
    int gao=Convert.ToInt32(byteString.Substring(0,……


...源代码都有了

#29


int n = 98;
string str = Convert.ToString(n, 2);            
byte by = Convert.ToByte(str,2);你就是想把两位整数存成字节形式吧,这样98就变成字节形式了0x98了,高4位是1001,低4位是1000

#30


byte n=98;

var 高位=(n&240)>>4
var 低位=(n&15)<<4

#31



byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦
byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够详细了吧--

code/10得到的是code的十位,在这个例子里就是9,为什么乘以16呢,因为要把它变成byte的高4位,比如一个十六进制的数0X10,等于十进制的16,那么十六进制的0x90就等于9*16;code%10取的是code的个位。
建议楼主还是去了解下byte的高四位和低四位是怎么回事吧,把它看成十六进制就好办多了

#32


code/10得到的是code的十位,在这个例子里就是9,为什么乘以16呢,因为要把它变成byte的高4位,比如一个十六进制的数0X10,等于十进制的16,那么十六进制的0x90就等于9*16;code%10取的是code的个位。
这种方法不错

#33


首先向右移若干位得到第一个包含高位字节的变量,再把原两位数字左移若干位再右移若干位得到低位字节,再把这两个变量相加。

#34


引用 31 楼 leafmao 的回复:
C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够详细了吧--
code/10得到的是code的十位,在这个例子里就是9,为什么乘以16呢,因为要把它变成byte的高4位……


如果 code 是00怎么办?

#35


http://msdn.microsoft.com/zh-cn/library/5bdb6693(v=VS.80).aspx
撸主,不用多考虑了。
1.如果要技巧或者算法,你可以照搬。
2.如果你知道该数据类型的本质,有点编程的基础,完全可以以自己的方式弄出你想要的结果。

如果撸主不想多动脑,就继续在这里等完整答案吧。

#36


引用 35 楼 chenandczh 的回复:
http://msdn.microsoft.com/zh-cn/library/5bdb6693(v=VS.80).aspx
撸主,不用多考虑了。
1.如果要技巧或者算法,你可以照搬。
2.如果你知道该数据类型的本质,有点编程的基础,完全可以以自己的方式弄出你想要的结果。

如果撸主不想多动脑,就继续在这里等完整答案吧。


。。。。。。。。。。。。。。。。。。。。。
我其实只是想问哈 这个答案和8楼的有啥区别而已···

#37


这个问题很简单  取十位数的数值9 付给byte类型变量bValue1 二进制表示 0000 1001

 然后 bValue1左移4位,移动到高4位获得bValue12 二进制表示  10010000, 取个位数值8 赋值给 byte 类型 变量 bValue3 二进制表示 00001000 ,个位直接保存在了低四位。  bValue12、 bValue3  相加的到楼主需要的结果  
1001 1000   原理就是这样子
代码 
 byte bValue1 = 9;
 bValue2 =  bValue1 <<4;
 byte bValue3 = 8;
 byte result = bValue2  + bValue3;


#38


引用 34 楼 yuekunge 的回复:
引用 31 楼 leafmao 的回复:C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够详细了吧--
code/10得到的是code的十位,在这个例子里就是9,为什么乘……


是00的话那得到的就是0x00;你都不自己试下的吗
目测楼上已经有好几个答案了,但是楼主一点脑筋都不想动,是不是要大家从00一直到99写100个例子给你呀。。。。

#39


引用 37 楼 youngmumu 的回复:
这个问题很简单  取十位数的数值9 付给byte类型变量bValue1 二进制表示 00001001

 然后 bValue1左移4位,移动到高4位获得bValue12 二进制表示 10010000, 取个位数值8 赋值给 byte 类型 变量 bValue3 二进制表示 00001000 ,个位直接保存在了低四位。  bValue12、 bValue3  相加的到楼……


嗯嗯 我知道 你这个和八楼一样··
  谢谢你

#40


引用 38 楼 leafmao 的回复:
引用 34 楼 yuekunge 的回复:引用 31 楼 leafmao 的回复:C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够详细了吧--
code/10得到的是c……

答案多有啥用 
  没搞懂原理  只要答案我发个帖子闹锤子啊···

#41


引用 40 楼 yuekunge 的回复:
引用 38 楼 leafmao 的回复:引用 34 楼 yuekunge 的回复:引用 31 楼 leafmao 的回复:C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result呢,就是转变后的字节,就是byte类型,够……


跪了,你不思考,别人就是给你讲一千遍原理你也是不懂
我提供的方法在31楼已经进行了很详细的说明,你要是还看不懂。。。。。那。。。。还是。。。。

#42


引用 41 楼 leafmao 的回复:
引用 40 楼 yuekunge 的回复:引用 38 楼 leafmao 的回复:引用 34 楼 yuekunge 的回复:引用 31 楼 leafmao 的回复:C# code?12byte code=98;//楼主啊,code呢,就是你要转换的两位数,数字随便你改,两位就行啦byte result=(byte)(code/10*16+code%10);//result……



谢了   
问题不在于答案是什么··
但是 还是要谢谢你的耐心讲解哦··
我知道你和八楼的结果都是一样的··
   我只是问哈你和她的区别是什么··
 我并没说 我没懂撒··只是请教你 你这周思考的区别在那、?
sorry······

#43


好吧,区别在于8楼的是位运算,我用的方法是算术运算
将一个数左移4位,意思是将一个数的二进制表示左移4位,相当于乘以16
你可以去了解下2进制和16进制
比如一个数为1,左移4位,表示成二进制的byte类型就是0001 0000,表示成十进制就是16,表示成十六进制就是0x10.

#44


引用 43 楼 leafmao 的回复:
好吧,区别在于8楼的是位运算,我用的方法是算术运算
将一个数左移4位,意思是将一个数的二进制表示左移4位,相当于乘以16
你可以去了解下2进制和16进制
比如一个数为1,左移4位,表示成二进制的byte类型就是0001 0000,表示成十进制就是16,表示成十六进制就是0x10.

谢谢!!!!!! C# byte的高四位和低四位

#45


楼主好奇葩,编程竟然还能不懂16进制?!?!

#46


引用 45 楼 yuandonghuia 的回复:
楼主好奇葩,编程竟然还能不懂16进制?!?!


是呀 是呀·
  不懂呀··
你懂完了呀?
  什么是!@##@¥#@¥@#¥按 ?

#47


我也想知道这个问题,请指教

#48


引用 47 楼 dulei0915 的回复:
我也想知道这个问题,请指教


那你更奇葩····

#49


该回复于2012-12-13 08:56:20被管理员删除