怎么把一个数变成压缩型的十六进制数,比如:3512 怎么变成一个长度只有两位的压缩型数据呢???
望各位大侠赐教。谢谢!!!!

解决方案 »

  1.   

    不是两位,是两个字节int i = 3512;
    short s = (short)i;
      

  2.   

    唉 搞不懂 
    说明是这样的“COPYBOOK中 S9(4)类型为压缩型CHAR,实为2位”
      

  3.   

    Integer.toHexString(oldValue)
     比如oldValue=3512
    算出是 db8  但它的接口只定义了两位啊
    不明?!!!!!
      

  4.   

    通用包头数据格式
    长度:100
    说明:所有接口功能前100个字节均按此格式组成
    变量名称 数据类型    含义          属性                       取值说明
    SYSCDE X(4)  外部系统代号 必填 目前对外部系统按以下规则分配系统标识:FUNCDE X(6)  功能码标识,用于区别不同的接口功能 必填 目前提供以下接口功能:TERCDE X(12)    交易发起终端代码 选填(不填须默认为空)终端和操作柜员
    TRNDAT X(8)       交易日          必填                 按YYYYMMDD格式组成
    COMMIT X(1)    COMMIT点标识, 必填                       Y      —N
    COMLEN 9(4)COMP   通讯区总长度 必填       通讯数据包的总长度
    FILLER X(67)    预留                            默认为空这就是那个接口的格式 "COMLEN 9(4)COMP   通讯区总长度 必填       通讯数据包的总长度".  只占两个长度,但要送一个数 这个数是3512.
      

  5.   

    35的ASCII码,12的ASCII码。或者两者转为16进制后的ASCII码。是两位。
      

  6.   

    你把你用来填充这个包头的代码贴出来。
    或者说你准备用什么发送数据?用OutputStream?哪种类型的OutputStream?另外,x(8)是什么意思?8代表什么?
    “COMLEN 9(4)COMP”是什么意思?从哪里能看出来要使用“2”个长度?再者,你试一下我说的强制转换
      

  7.   

    To: szcxz()
    你的位是指什么?你是项目经理吧?
      

  8.   

    to UnAgain:
    一个小小程序员
      

  9.   

    还剩下2个字节呢,3512的二进制码为:0000 1101 1011 1000,16进制数表示为0x0DB8
    其中每个0或1占一位,一字节为8位,两字节16位.----------做梦都想成为程序员5555555
      

  10.   

    忘了说了,int a = 3521;当读取a的时候,得到的就是3521,不用去做什么转换地!int型的长度就是16位,不足16位的,正数前补0,象上面写的,负数要用补码表示,不足16位前面补1.而16进制不过是人为表示数字,和计算机无关,计算机只会读取0/1,而int也就是类型,告诉它一次应该读多少位!楼主所说的"如把db放到长度位一位的字符里",一个位只能存一个1或者一个0,所以不可能放下.
    字符d和字符b的ASCII码表示为7位.一般char类型为8位,这就浪费了一位,可惜我不会读啊,有高手进来讲一下啊!呵呵    -----------我要当程序员