关于易语言中 到无符号长整型(long) java中实现

在写java qq安卓协议的时候,遇到很多麻烦,其中一个就是以下汇编语言

没时间去看具体意思,只能摸索,如下代码

 

.版本 2

.子程序 到无符号长整型, 长整数型
.参数 long, 整数型

置入代码 ({ 139, 69, 8, 51, 210, 201, 194, 4, 0 })

返回 (0)
 

 

//* “长整数形:-2047848776”
//    * “转换后:2247118520”

 

package com.koow.kkwwo.bytes.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Random;

import org.apache.log4j.Logger;

import com.koow.kkwwo.c.Pack;
import com.koow.kkwwo.hex.util.HexUtil;

/**
 * 和 byte[]的相互转换
 * 
 * @author Koow
 * 
 */
public class ToButeArray {

	private static Logger logger = Logger.getLogger(ToButeArray.class);

	/**
	 * 16进制字符串转Int Integer.parseInteger的时候,会将传入十六进制数字一致认为成正数,
	 * 所以这时候表示负数的十六进制字符串所表示的数字就超出了Integer所能表示的数字范围,会报出NumberFormatException
	 * 转换为BigInteger再转换Int
	 * 
	 * @param n
	 * @return
	 */
	public static Integer String16ToInt(String n) {
		n=Pack.c_Null(n);
		return Integer.valueOf(n, 16);
	}

	/**
	 * 16进制字符串转BigInteger
	 * 
	 * @param n
	 * @return
	 */
	public static BigInteger String16ToBigInteger(String n) {
		n=Pack.c_Null(n);
		return new BigInteger(n, 16);
	}

	/**
	 * Int转16进制字符串
	 * 
	 * @param n
	 * @return
	 */
	public static String LongToString16(long n) {
		String st = Long.toHexString(n).toUpperCase();
		st = String.format("%5s", st);
		st = st.replaceAll(" ", "0");
		return st;
	}

	/**
	 * 整数转换成字节数组 关键技术:ByteArrayOutputStream和DataOutputStream
	 * 
	 * @param n
	 *            需要转换整数
	 * @return
	 */
	public static byte[] intToButeArray(int n) {
		byte[] byteArray = null;
		try {
			ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
			DataOutputStream dataOut = new DataOutputStream(byteOut);
			dataOut.writeInt(n);
			byteArray = byteOut.toByteArray();
		} catch (IOException 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值