数据转换-整数字节数组

任务详情

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

大家都在看

  • 【VirtualBox】VirtualBox磁盘扩容

    我的VirtualBox里面运行着Ubuntu镜像,最初创建时设置的时20G,开发过程中就不够用了 查询磁盘使用情况 df-h 查询磁盘的使用空间确实已经到了极限 扩容步骤: 1….

    Linux 2023年6月13日
    097
  • Linux内核中内存管理相关的数据结构

    本文简要说明几个内核和内存管理有关的结构体。其中 struct page 和 struct zone有较大幅度的删减,主要删减了和NUMA模型SPARSE模型以及内存热插拔相关的域…

    Linux 2023年6月7日
    0112
  • Linux安装软件时90%的人会遇到这个报错,如何解决?

    提示 Could not get lock /var/lib/dpkg/lock 报错? 有些小伙伴在使用 apt 包管理器更新或安装软件时,可能会遇到过诸如以下的错误提示: E:…

    Linux 2023年6月14日
    0131
  • 扑克牌大小—牛客网

    扑克牌大小_牛客题霸_牛客网 (nowcoder.com) #include #include<string> #include using namespace std…

    Linux 2023年6月13日
    0124
  • 文件漏洞上传

    一般危害:xss csrf ssrf获取后台登录 影响业务逻辑文件上传 严重级别漏洞,可以直接接管你的服务器 初级别: $target_path = DVWA_WEB_PAGE_T…

    Linux 2023年6月6日
    0113
  • django学习__1

    Django python网络编程回顾 之前我们介绍过web应用程序和http协议,简单了解过web开发的概念。Web应用程序的本质 接收并解析HTTP请求,获取具体的请求信息 处…

    Linux 2023年6月7日
    0105
  • 最小容器内常用命令安装方法

    首先改成中科大的源 echo “deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free\ndeb ht…

    Linux 2023年6月13日
    0109
  • Redis基础教程

    redis基础教程 1、 string数据结构 a) SET server:name “fido” b) SETNX server:name1″…

    Linux 2023年5月28日
    087
  • Redis具体解释

    2、 redis.windows.conf各项配置參数介绍 默认情况下,redis不是在后台模式执行的,假设须要在后台进程执行。把该项的值更改为yes。默觉得no daemoniz…

    Linux 2023年5月28日
    0102
  • MobaXterm左侧没有文件列表,没有SCP,不显示文件夹问题处理

    一般情况是你设置的session属性问题,具体做法是右键你的session,选edit session,SSH 如下图: 选择 SFTP protocol 并勾选 Follow S…

    Linux 2023年5月27日
    0150
  • 如何在 pyqt 中实现桌面歌词

    前言 酷狗、网抑云和 QQ 音乐都有桌面歌词功能,这篇博客也将使用 pyqt 实现桌面歌词功能,效果如下图所示: 代码实现 桌面歌词部件 LyricWidget 在 paintEv…

    Linux 2023年6月7日
    0111
  • 旅游清单一步搭建,Angular助力你的踏春计划

    春天的脚步愈发临近,相信很多小伙伴已经开始规划自己的踏春计划了,无论是欣赏名胜古迹,还是走访风土人文,你都需要提前准备一份旅游清单!有了这款Angular旅游计划应用,从地点到预算…

    Linux 2023年6月13日
    0113
  • docker-compose安装,yml文件配置

    1、离线安装 https://github.com/docker/compose/releases 移动文件 mv docker-compose-linux-x86_64 /usr…

    Linux 2023年6月14日
    094
  • tcpip详解-读书笔记

    TCP/IP详解 卷一 第一版读书笔记 第一章: 应用层关心是应用程序的细节,而不是数据在网络中对的传输活动,下三层对应用程序一无所知,但他们要处理所有的通信细节。 七层代理可以根…

    Linux 2023年6月13日
    0102
  • 白话linux操作系统原理

    虽然计算机相关专业,操作系统和计算机组成原理是必修课。但是大学时和真正从事相关专业工作之后,对于知识的认知自然会发生变化。还很有可能,一辈子呆在学校的老师们只是照本宣科,自己的理解…

    Linux 2023年5月27日
    0118
  • IOC容器模拟实现

    运用反射机制和自定义注解模拟实现IOC容器,使其具有自动加载、自动装配和根据全限定类名获取Bean的功能。 1-1 IOC容器的本质 IOC容器可理解为是一个map,其中的一个en…

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