C#: int 与 byte[] 互转

        public static int ToInt32(params byte[] v) {
            var r = 0;
            var len = v.Length;
            if (len > 4) {
                len = 4;
            }
            for (var i = 0; i < len; i++) {
                r |= v[i] << 8 * (len - i - 1);
            }
            return r;
        }

        public static byte[] ToBytes(int v) {
            var len = 0;
            for (var i = 0; i < 4; i++) {
                if (v >> 8 * i < 255) {
                    len = i + 1;
                    break;
                }
            }
            var bs = new byte[len];
            for (var j = 0; j < bs.Length; j++) {
                bs[j] = (byte)(v >> (bs.Length - j - 1) * 8);
            }
            return bs;
        }
时间: 2024-11-05 12:19:21

C#: int 与 byte[] 互转的相关文章

java中int与byte数组互转代码详细分析

转载请注明出处:http://blog.csdn.net/tang9140/article/details/43404385 在java中,可能会遇到将int转成byte[]数组,或者将byte[]数组转成int的情况.下面我们来思考下怎么实现? 首先,分析int在java内存中的存储格式. 众所周知,int类型在内存中占4个字节,采用补码方式存储(假如对原码.反码.补码不熟悉,请查阅相关资料).举例: 整型-128对应内存中的二进制值为 整型128对应内存中的二进制值为 然后,考虑如何把int

c# int与byte[]转换

网络上总结的方法汇总: 1: public byte[] intToByte(int i) { byte[] abyte0 = new byte[4]; abyte0[0] = (byte) (0xff & i); abyte0[1] = (byte) ((0xff00 & i) >> 8); abyte0[2] = (byte) ((0xff0000 & i) >> 16); abyte0[3] = (byte) ((0xff000000 & i)

JAVA 与 C# 通讯中的int 之byte[]

在JAVA与C#通讯时由于两种不通的语言INT类型不样,比如在做Soket时做数据包头确认数据长度需要一个固定的字节数中存放一个INT类型的数据发送时会读不到相同的数据. 在JAVA中 把 INT转为 byte[] 1 /** 2 * 把int32类型的数据转存到4个字节的byte数组中 3 * @param i : int32类型的数据 4 * @return 返回 4个字节大小的byte数组 5 */ 6 public static byte[] ConvertIntToByteArray(

java int转byte和long转byte

在网络编程中,出于节约带宽或者编码的需要,通常需要以原生方式处理long和int,而不是转换为string. public class ByteOrderUtils { public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[3] = (byte) (res & 0xff);// 最低位 targets[2] = (byte) ((res >> 8) & 0xff);// 次低

Java中用反码表示整数,及int到byte的转换

Java中的整数都是通过补码表示的,当整数为正数时,补码和原码相同,当整数为负数时,补码为原码按位取反(符号位除外),然后加1. 通过一些例子可以比较明显的看出: int a = -1; System.out.println(Integer.toBinaryString(a));//output: 11111111111111111111111111111111 int a = -128; System.out.println(Integer.toBinaryString(a));//outpu

int与byte的区别

Java中涉及byte.short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果.因此,如果把两个byte类型值相加,最后会得到一个int类型的结果.如果需要得到byte类型结果,必须将这个int类型的结果显式转换为byte类型.例如,下面的代码会导致编译失败:class BadArithmetic { static byte addOneAndOne() { byte a = 1; byte b = 1; byte c = (a +

int 转换 byte[] 或 byte[] 转换 int

byte[] bs = BitConverter.GetBytes(0x1234); Console.WriteLine(bs[0].ToString("X2") + " " + bs[1].ToString("X2")); // output: 34 12 低位在前,高位在后 byte[] bs2 = BitConverter.GetBytes(System.Net.IPAddress.HostToNetworkOrder((short)0x1

BigInteger与byte[]互转注意问题

1.byte[]转BigInteger a.高位字节在后 用new BigInteger(byte[])可以实现byte[]转BigInteger,但是要注意字节顺序:高位字节在后 所以在转之前要把byte[]反转一下 b.正整数 需要在byte[]后面加个字节[00] 源代码 public BigInteger toBigInteger(byte[] v) { byte[] r = new byte[v.Length + 1]; Array.Copy(v.Reverse().ToArray()

java笔记--关于int和byte[]的转换

关于int和byte[]数组的转换 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3891747.html "谢谢-- 众所周知java有8种基本类型,分别是低级变量(byte,char,boolean,shot)和高级变量(int,long,double,float),低级变量会自动转化成高级变量,而高级变量则要用强制转换才能成为低级变量,可是在文件传输和网络传输当中,由于计算机都是以二进制来存储数据的,所以很多时候我们需要将要