数据转换-整数字节数组

任务详情

任务详情
0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务

1 参考《GMT 0009-2012 SM2密码算法使用规范》第6节”数据转换” 在utils.h和utils.c中完成整数与8位字节串的转换功能(10′):
int Int2ByteArr(unsigned int i, unsigned char * ba);
int ByteArr2Int(unsigned char * ba,unsigned int * i);

2 并写出测试代码测试上述函数(不能与下面代码一样),比如(10′):
unsigned int i=123456789;
Int2ByteArr(i, ba);
//结果:ba = {0x07,0x5B,0xCD,0x15};

unsigned char ba [] = {0x07,0x5B,0xCD,0x15};
ByteArr2Int(ba, &i);
//结果: i=123456789

3 提交代码(或代码链接)和运行结果

main1.c

数据转换-整数字节数组
#include<stdio.h>
#include"utils.h"

//20191223
int main(){

  int p;
  char bytearr[100];
  printf("&#x8BF7;&#x8F93;&#x5165;&#x4E00;&#x4E2A;&#x6574;&#x578B;&#x6570;&#x5B57;\n");
  scanf("%d",&p);
  printf("&#x628A;&#x6574;&#x578B;&#x6570;&#x8F6C;&#x5316;&#x4E3A;&#x5B57;&#x8282;&#x6570;&#x7EC4;\n");
  INT2ByteArr(p,bytearr);
  printf("&#x5B57;&#x8282;&#x6570;&#x7EC4;&#x4E3A;:");
  printf("{%s}\n",bytearr);

  char barr[100];
  int h;
  printf("&#x8BF7;&#x8F93;&#x5165;&#x4E00;&#x4E2A;&#x5B57;&#x8282;&#x6570;&#x7EC4;:");
  scanf("%s",barr);
  printf("&#x628A;&#x5B57;&#x8282;&#x6570;&#x7EC4;&#x8F6C;&#x5316;&#x4E3A;&#x6574;&#x578B;&#x6570;&#x5B57;:");
  ByteArr2INT(barr,&h);
printf("%d\n",h);
}

</stdio.h>

utils1.c

#include<stdio.h>
#include"utils.h"
#include<string.h>
int Hex2Char(int fromi,char *toc)
{
    if(fromi>=0&&fromi<=9) { *toc="fromi+'0';" } else if(fromi>=10&&fromi<=15) { *toc="fromi+'A'-10;" } else printf("输入的16进制数据不正确!"); return 0; int char2hex(char fromc,int *toi) if(fromc>='0'&& fromc<='9') { *toi="fromc-'0';" } else if(fromc>='A'&& fromc<='f') { *toi="fromc-'A'+10;" } else printf("输入的16进制字符不正确"); return 0; int int2bytearr(int i,char *ba){ j; a; sum="0;" k="i;" for(j="0;;j++)" if(k!="0)" sum++; break;>=0;j--){
     a = i%16;
     Hex2Char(a,&ba[j]);
     i=i/16;

   }
   ba[sum+1]='\0';

}
int ByteArr2INT(char *ba,int *i)
{
   int len;
   int j;
   int n=0;
   *i=0;
   len = strlen(ba);
   for(j=0;j<len;j++) { char2hex(ba[j],&n); printf("%d\n",n); *i="(*i)*16+n;" } < code></len;j++)></='f')></='9')></=15)></=9)></string.h></stdio.h>

utils.h

#ifndef _UTIL_H_
#define _UTIL_H_

//char Hex2Char(int i);
//int Char2Hex(char c);

int Hex2Char(int fromi,char * toc);
int Char2Hex(char fromc,int * toi);

int Bitstr2ByteArr(char * bs,char * ba);
int ByteArr2Bitstr(char * ba,char * bs);

int Int2ByteArr(int i,char * ba);
int ByteArr2Int(char * ba,int * i);

#endif

运行结果

数据转换-整数字节数组

Original: https://www.cnblogs.com/zzjjyy123/p/16337873.html
Author: 20191223张俊怡
Title: 数据转换-整数字节数组

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585815/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Zabbix-企业级监控系统

    Zabbix-企业级监控系统 Zabbix 手册-官网 1.Zabbix简介 Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完…

    Linux 2023年6月13日
    069
  • 【MQTT】在Linux使用MQTT上报温度到阿里云

    MQTT上报温度到阿里云 * – 前言 – iniparser配置文件 – cJSON – sqlite3数据库 – 流…

    Linux 2023年6月13日
    097
  • Ubuntu18.04 显卡驱动安装(解决各种疑难杂症)

    步骤 下载驱动 准备工作 进行安装 检查安装 下载驱动 首先我们需要去官网下载显卡驱动 打开浏览器,在百度搜索框中搜索:显卡驱动 下载 在 手动搜索驱动程序一栏,根据自己的显卡进行…

    Linux 2023年6月14日
    0104
  • 如何画出别人一看就懂的架构图?

    技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也体现在优秀工程师在工作效率提升、产品性能优化和用户体验改善等经验方面的分享,以提…

    Linux 2023年6月8日
    086
  • 用户身份标识与账号体系实践

    互联网的账号自带备忘机制; 一、业务背景 通常在系统研发的过程中,需要不断适配各种业务场景,扩展服务的领域和能力,一般会将构建的产品矩阵划分出多条业务线,以便更好的管理; 由于各个…

    Linux 2023年6月14日
    085
  • 计算机辅助数据绘图(matlabpythonjs)

    1. matlab绘图 官方说明:https://ww2.mathworks.cn/help/matlab/creating_plots/types-of-matlab-plots…

    Linux 2023年6月14日
    0113
  • 渗透测试常用方法总结

    转载自 https://blog.csdn.net/qq_42636435/article/details/92839738 Original: https://www.cnblo…

    Linux 2023年6月7日
    069
  • SQLI-LABS(Less-3)

    Less-3(GET-Error based-Single quotes with twist-string) 打开 Less-3页面,可以看到页面中间有一句 Please inp…

    Linux 2023年6月6日
    078
  • Jenkins

    Jenkins Jenkins jenkins简介 jenkins工作原理 jenkins特点 CI/CD是什么 使用tomcat容器安装jenkins jenkins流水线项目发…

    Linux 2023年6月6日
    0101
  • powershell download, 兼容低版本 powershell

    powershell (new-object System.Net.WebClient).DownloadFile(‘文件url’,’保存路径’); Original: https…

    Linux 2023年5月28日
    0103
  • 高等代数:4 矩阵的运算

    4 矩阵的运算 1、数域K上两个矩阵称为 相等,如果它们的行数相等,列数也相等,并且它们的所有元素对应相等。 2、定义1:设(A=(a_{ij}),B=(b_{ij}))都是数域K…

    Linux 2023年6月8日
    086
  • 好记性不如烂笔头系列之STM32 SysTick 精确延时(非中断方式)

    在stm32里,如果想精确延时又不需要中断做别的事; 就可以选择这个stick延时方法,简单易用。其寄存器容易设置,如下图 寄存器一目了然, 就是有一点 其记数只有24位,所以最大…

    Linux 2023年6月13日
    0113
  • Mac安装php和redis扩展

    Mac上有特定的包管理工具homebrew,也叫brew,这里的php安装用的就是brew 1安装php brew install php@7.0。 brw安装会自动管理依赖,所以…

    Linux 2023年5月28日
    083
  • nginx配置文件单独创建和管理

    在nginx主配置文件nginx.conf的http模块下引入配置文件夹(注意路径的正确性) 1、nginx主配置文件备份后编辑(nginx配置存放位置:/usr/local/ng…

    Linux 2023年6月6日
    079
  • 如何隐藏shell脚本内容

    从事 Linux 开发的同学,经常需要编写 shell 脚本,有时脚本中会涉及到一些敏感内容,比如一些 IP 地址,用户名以及密码等,或者脚本中有一些关键的代码, 所有这些内容你都…

    Linux 2023年6月13日
    089
  • 2-第一个Django程序

    第一个Django程序 从本章节开始将通过实现一个投票应用程序,来让用户逐步的了解Django。这个程序由两步分组成: 公共站点,允许用户访问进行投票,和查看投票。 站点管理,允许…

    Linux 2023年6月7日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球