首页 > 其他分享 >byte数组转16进制,二进制字符串

byte数组转16进制,二进制字符串

时间:2024-11-08 22:43:00浏览次数:1  
标签:16 二进制 bytes var sb byte Append

1) 16进制字符串

a) c#内置api
byte[] bytes = BitConverter.GetBytes(123);
var hexStr = BitConverter.ToString(bytes);

 

b) 实现1

///返回低字节顺序十六进制字符串(低字节在左侧)
public static string ToHexString(byte[] bytes)
{
    char[] hexChars = "0123456789ABCDEF".ToCharArray();
    var sb = new StringBuilder();
    foreach (var b in bytes)
    {
        char c1 = hexChars[b >> 4];
        char c2 = hexChars[b & 0x0f];
        sb.Append(c1).Append(c2).Append('-');
    }
    sb.Remove(sb.Length - 1, 1);
    return sb.ToString();
}

 

c) 实现2

public static string ToHexString2(byte[] bytes)
{
    var sb = new StringBuilder();
    foreach (var b in bytes)
    {
        sb.Append(Convert.ToString(b, 16).PadLeft(2, '0')).Append('-');
    }
    sb.Remove(sb.Length - 1, 1);
    return sb.ToString();
}

 

 2) 二进制字符串

///返回高字节顺序的二进制字符串(高字节在左)

public static string ToBinString(byte[] bytes)
{
    var sb = new StringBuilder();
    if (BitConverter.IsLittleEndian)
    {
        //小端时: bytes数组顺序为低字节 -> 高字节,所以要反向遍历
        for (int i = bytes.Length - 1; i >= 0; --i)
        {
            byte b = bytes[i];
            var byteBin = Convert.ToString(b, 2).PadLeft(8, '0');
            sb.Append(byteBin).Append(' ');
        }
    }
    else
    {
        //大端时: bytes数组顺序为高字节 -> 低字节
        foreach (var b in bytes)
        {
            var byteBin = Convert.ToString(b, 2).PadLeft(8, '0');
            sb.Append(byteBin).Append(' ');
        }
    }
    sb.Remove(sb.Length - 1, 1);
    return sb.ToString();
}

 

参考 C# byte数组与16进制间的相互转换_Marydon的技术博客_51CTO博客 C# byte数组与16进制字符串相互转化 - 许宝 - 博客园 c# float转二进制 16进制 大端序小端序_将float类型转换为2字节的有符号16进制数-CSDN博客  

标签:16,二进制,bytes,var,sb,byte,Append
From: https://www.cnblogs.com/sailJs/p/18518143

相关文章

  • tensorflow案例5--基于改进VGG16模型的马铃薯识别,准确率提升0.6%,计算量降低78.07%
    ......
  • 洛谷题单指南-二叉堆与树状数组-P1168 中位数
    原题链接:https://www.luogu.com.cn/problem/P1168题意解读:中位数就是位于中间的数,前1个数的中位数是第1个,前3个数的中位数是第2个,前5个数的中位数的第3个...以此类推。所以,此题本质上就是动态维护一组数,每1/3/5...等奇数个取第k小的数,取一次后k++。解题思路:要动态维护数据,且每......
  • 电商数据api1688接口获取商品实时数据价格比价api代码演示案例
    1688商品详情接口(接口入口)它的主要功能是允许卖家从自己的系统中快速获取商品详细信息。通过这个接口,卖家可以提取到商品的各类数据,包括但不限于商品标题、价格、优惠价、收藏数、下单人数、月销售量等。此外,还可以获取到商品的SKU图、详情页图片等信息。这些信息可以帮助卖家......
  • 如何利用 1688 API 接口获取商品信息?
    以下是利用1688API接口获取商品信息的一般步骤:一、注册成为开发者并创建应用:注册账号:访问阿里巴巴开放平台,进行开发者账号注册,点击注册账号获取key和secret,填写真实有效的基本信息,如联系方式等。创建应用:使用注册的账号登录到阿里巴巴开放平台后,创建一个新的应用。为应用......
  • DAC8568IAPWR 数据手册 具有 2.5V、2ppm/°C 内部基准电压的 DAC7568、DAC8168、DAC85
    DAC7568、DAC8168和DAC8568分别为12位、14位和16位低功耗、电压输出、八通道数模转换器(DAC)。这些器件包括一个2.5V、2ppm/°C内部基准电压(默认禁用),可提供2.5V或5V的满量程输出电压范围。内部基准电压初始精度为0.004%,而且可在VREFIN/VREFOUT引脚上提供高达20mA......
  • 国标GB28181-2016平台LiteGBS国标GB28181软件,详细介绍LiteGBS视频监控系统
    智能视频监控系统利用图像处理、模式识别和计算机视觉技术,通过集成智能视频分析模块,借助计算机强大的数据处理能力,过滤无用或干扰信息,自动识别物体,提取关键信息,快速准确定位事故现场,判断异常情况,并以最优方式发出警报或触发相应动作。该系统实现全自动、全天候、实时监控,有效支持......
  • 力扣21 打卡16 判断矩形的两个角落是否可达
    思路:首先,检查矩形的起点和终点是否在任何一个圆的范围内,如果是则不存在合法路径。接着,判断每个圆是否与矩形的左上角边界或右下角边界相交。对于与左上边界相交的圆,使用深度优先搜索(DFS),查找是否存在一组相连的圆,最终能连接到右下边界。若找到这样的路径,则矩形被封锁,返回Fa......
  • H3C UniServer R5300 G3安装Ubuntu16.04系统下11T容量RAID5只识别为900G
    组网及说明装配组件:H3CUniServerR5300G3-RS5Z1R5300C-CTO服务器-国内版板卡:P460-M4阵列卡系统版本:Ubuntu16.04问题描述1、实际上sdb是4块4T盘配置的raid5,在系统下lsblk查看到只有900G大小。2、HDM中逻辑卷容量识别正常,SDS日志无报错。3、按照smartpqi的驱动升级步骤未......
  • Ubuntu 24.04 二进制安装 MySQL 8.0.20
    相关资料操作系统:Ubuntu24.04数据库下载地址:https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz部署#安装必要的依赖apt-yinstallnumactllibaio1t64-yln-sv/usr/lib/x86_64-linux-gnu/libtinfo.so.6.4/usr/lib/x86_64-li......
  • 洛谷题单指南-二叉堆与树状数组-P2827 [NOIP2016 提高组] 蚯蚓
    原题链接:https://www.luogu.com.cn/problem/P2827题意解读:初始n个数,每次取最大值x,根据u/v分成两部分:x*u/v,x-x*u/v,然后其余数都增加q,整个过程重复m次。输出有两类数据:第t,2t,3t...次取出的最大值;最后剩余的数第t,2t,3t...个,从大到小输出。解题思路:直观上,通过模拟法可以实......