大于127的是汉字编码,不能转为byte

解决方案 »

  1.   

    参考
    http://dev.csdn.net/develop/article/13/13104.shtm
      

  2.   

    ascii是不能表示那么大的编码,所以就有UTF-8这种形式的编码,支持的语言格式要多一些。
      

  3.   

    大于127的是汉字编码,不能转为byte
      

  4.   

    谢谢大家!
    可能问题表述的不是清楚。
    直接地问 0x8E 怎么才能转成byte,要真确的值,即值应该为142,不应该为-114如果没有办法,那么怎么实现0x8e转成一个char或者String??谢谢!
      

  5.   

    再次谢谢大家!
    可能问题表述不是太清晰吧。0x8E 对应于142,142转成byte后,再转int就是-114.
    但是这样的结果是正确的,因为这是在java这边表示的结果。byte 范围-128~127
    这是我们技术牛人说的。等我在unix测试一下,告诉大家结果。
      

  6.   

    可以考虑用两位byte[]表示一个..
      

  7.   

    char在java中表示一个字符,占两个字节,采用unicode编码。
      楼主所谓的大于127的ascii指什么??ascii都是小于127的,应该是大于127的unicode吧。大于127的unicode本身就是char,根本不存在转化的问题。
      至于转化为byte,应该这样理解:
       byte就是字节的整数表示,一个byte表示一个字节,范围在127~-127。硬要把char表示成byte,那就是一个unicode对两个byte
      

  8.   

    可以这样;
    byte[] bt=new byte[2];
    byte[0]=0x8E>>>4 & 0x000f;
    byte[2]=(0x8E<<12 &0xf000)>>>12 & 0x000f
      

  9.   

    众所周知,IBM、Sun和Apple等各式计算机都需要用ASCII编码作储存、启用和传递数据。ASCII字符和数值有256个(2^8),每个ASCII字符编码用八个比特,是单字节。在ASCII里,数值0到127范围通用所有的计算机,而从128到255,各类计算机的安排有所不同。从0到127的ASCII范围是7-bit ASCII。
      

  10.   

    可能大家的理解不同。但是有些知识是一样的吧,对不?我想实现的其实是这样的,就是把0x8e这个字节从java程序传到c程序,使用socket那么我就一定要把0x8e转成一个char或者一个byte现在遇到的问题是java中0x8e的byte是-114,c程序接收到后,如果是142那么就正确了。因为在c里面,0x8e是142
      

  11.   

    接收完后判断一下,判断接收到的数是>0还是<0if(value<0){
        value += 256
    }小于0的数加上256就正确了
      

  12.   

    0x8E表示十六进制数,是142,将其转换为byte时变为-114,因为byte的表示范围是-128---127之间,所以这里得到的是142对256的补码c中byte的表示也是这样的题目不像你说的那么复杂