数据转换-整数字节数组

任务详情

任务详情
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)

大家都在看

  • zenity,把shell加上图形界面

    有时自己写点小工具自己用,比较喜欢非图形界面的,可是有些应用还是弹出个东西来提醒一下,才能让你注意。 zenity是个很帅的东西,它用法可以参考它的–help ,这里不…

    Linux 2023年5月28日
    093
  • 分而治之-快排

    分而治之:把复杂的算法问题按一定的”分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出个部分的解,把各部分的解组成整个问题的解。 &#x…

    Linux 2023年6月7日
    0103
  • redis服务器

    这一次主要讲下redis中服务器这个结构体相关代码,主要从是代码层面进行讲解 redis服务器 redis服务器结构体主要代码在 redis.h/redisServer,下面给出该…

    Linux 2023年6月13日
    099
  • cgroup-v1在android中的应用实现浅析

    本文档内容主要是分析android设备中cgroup v1实现了哪些控制器,他们有哪些子控制器以及如何配置这些控制器的。 我是使用红米Note4Plus的开发版本来调研分析的,手机…

    Linux 2023年6月7日
    0112
  • zabbix自定义监控(当会话登录超过三个就报警)

    安装过程在此省略。 1.agent端去修改配置文件 2.调用自定义内容 vim /etc/zabbix/zabbix_agentd.d/login.conf UserParamet…

    Linux 2023年6月6日
    090
  • 搭建openvpn连接公司内网

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0123
  • Docker自定义镜像无容器日志输出

    Docker自定义镜像无容器日志输出 因工作环境需要,需自己定制一个python环境的镜像,但制作完之后, docker logs发现无日志输出,经文档查询原来需要将日志重定向到标…

    Linux 2023年6月8日
    094
  • 简单动态页面的爬取

    ch6&7 动态渲染页面的爬取 ajax数据爬取 动态渲染页面的爬取 selenium的使用 splash的使用 1. ajax数据爬取 ajax数据的爬取主要依靠分析XH…

    Linux 2023年6月7日
    0105
  • Ubuntu报Command ‘firewall-cmd’ not found, but can be installed with: apt install firewalld错误解决方案

    当输入 firewall-cmd –list-ports 查看端口信息时报错 报错的原因可能是没有安装firewall,安装命令为: yum install firewalld …

    Linux 2023年6月7日
    0100
  • JVM 运行时数据区 堆和方法区

    2、运行时数据区 哔哩哔哩 尚硅谷视频 宋红康老师 2.5、堆 堆的核心概述 一个JVM实例只存在一个堆内存,堆也是Java管理内存的核心区域 Java 堆区在JVM启动的时候即被…

    Linux 2023年6月7日
    0120
  • 从零开始构建Linux

    目的:深入了解以Linux内核为基础的系统是如何组成,运行,以构建一个最基础的,纯净的系统。 LFS构建步骤宿主机准备– linux操作系统安装– 使用独立…

    Linux 2023年6月7日
    0100
  • 散列数据结构以及在HashMap中的应用

    1. 为什么需要散列表? 对于线性表和链表而言,访问表中的元素,时间复杂度均为O(n)。即便是通过树结构存储数据,时间复杂度也为O(logn)。那么有没有一种方式可以将这个时间复杂…

    Linux 2023年6月7日
    0137
  • 用动态端口,增强winrm,open sshd的,服务器安全

    前言 我开发了一套开源,免费,跨平台的devops脚本批量运维工具。【kaiiit家的饭店】是软件的正式名字。【卡死你3000】是第一版开发代号。 想要增强win被控机密码安全。可…

    Linux 2023年6月14日
    085
  • 【Example】C++ 标准库多线程同步及数据共享 (std::future 与 std::promise)

    否则你会像听天书一样懵。(…) ==================================== 在任何语言的多线程编程当中,必然涉及线程的同步及数据的共享,方…

    Linux 2023年6月13日
    0122
  • LeetCode-补充题9. 36进制加法

    题目来源 题目详情 36进制由0-9,a-z,共36个字符表示。 要求按照加法规则计算出任意两个36进制正整数的和,如1b + 2x = 48 (解释:47+105=152) 要求…

    Linux 2023年6月7日
    0105
  • PYTORCH: 60分钟

    什么是PyTorch? PyTorch 是一个基于Python的科学计算包,有两大用途: NumPy的替代品,可使用GPUs和其它加速器的强大功能 一个用于实现神经网络的自动微分库…

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