基本数据类型int转btye[]数据类型的方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp内功修炼
{
///
/// 测试int类型数据转字节数组
///
internal sealed class TestIntToByteArray
{
///
/// int类型数据转byte[]类型
///
///
///
public byte[] intToBytes(int value)
{

        //一个字节占的位数8  目的 后面计算变量占多少字节用
        int  IntEight = 8;
        //得到value变量的名称空间.类名  这里是System.Int32    目的就是要拿到32  其实就是32位二进制数
        string typeName = value.GetType().ToString();
        typeName = typeName.Split('.')[1];     //得到Int32字符串
        for (int i = 0; i < typeName.Length; i++)
        {
            if (typeName[i] >= 'a' && typeName[i] <= 'z' || typeName[i] >= 'A' && typeName[i] <= 'Z')
            {
                //这个是当i索引对应的内容是字母  我们就直接简单粗暴给截当前i对应的内容
                //这个会增加内存的频繁创建   建议你们用其他技术避免这个方式  比如正则表达式
                typeName = typeName.Substring(i + 1);  //为了拿到数字32
            }
        }
        //得到变量的字节数量
        int byteCount = Convert.ToInt32(typeName) / IntEight;
        //开辟对应字节数量数组
        byte[] intByteArray = new byte[byteCount];
        for (int i = 0; i < byteCount; i++)
        {
             //注意右移动分别是0  8  16  24  依次拿到不同字节中的内容   
             //技能点 & 这个是针对二进制与操作  相同则为1 否则0   比如  1111 & 1000 =1000 
            intByteArray[i] = (byte)(value >> (i * 8) & 255); 
        }
        Console.WriteLine("数据占的字节数:" + byteCount);
        for (int i = 0; i < byteCount; i++)
        {
            //输出每个字节内容 仅仅为了测试       注意你把控制台输出代码注释掉就可以移植到unity 也可以用编译指令自动判断
            Console.WriteLine(intByteArray[i]);
        }
        //返回给调用方一个字节数值
        return intByteArray;
    }
}

}
测试工作我就不做了,看到的朋友动手测试吧,我是测试通过了的,主要讲解思路** 不懂得朋友直接留言 看到了会详细讲解 为什么会去自己封装 我好像没有找到int 转byte[] 的底层api 不知道你们有发现的吗 可以留言下 类似的double 等其他类型转byte[] 方法可以复制粘贴 本打算用泛型 但是 >>这个运算符不支持T 就没有用了 你们可以改进下 或者换掉 >>

你可能感兴趣的:(c#)