将数值型数据转换为Byte[]数组

因为工作需要,要将二进文件读进来,并将里边的内容修改掉。要把一些数值,字符什么的填到文件里。
找C#里相关的接口,鬼都没见着,通过FOX看到一个Number类,但是internal类型的。。。
总不能自己写一个求补的程序吧???而且类型可能是枚举,可能是结构体,那不就折腾死了!!
最终用了几年没用过的东西,指针,问题瞬间解决。想当年动不动就二级、三级指针的时候,用得很爽,要不然也不会想起还有指针这回事。C#是支持的,但一直没用过,只是一定要包含在unsafe块中,并且取地址的对象必须不是托管类型的,所以也没有办法用泛型(这点比较闷)。

比如:
long  t  = 32552452 ;
byte *  bp  =  ( byte * ) & t;
int  size  =   sizeof ( long );
byte [] bytes  =   new   byte [size];
for ( int  i = 0 ;i < size;i ++ )
    bytes[i] 
=   * (bp + i);


除了第一行代码,其余的都可以抽象为一个通用的方法:
public   unsafe   static   byte [] Copy( byte *  p, int  size)
{
        
byte[] bytes = new byte[size];
        
for(int i=0;i<size;i++)
            bytes[i] 
= *(p+i);
        
return bytes;
}

调用:
long  t  = 21242542 ;
byte [] bytes  =  Copy(( byte * ) & t, sizeof ( long ));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值