首页 > 其他分享 >数据转换-整数字节数组

数据转换-整数字节数组

时间:2024-06-03 09:43:37浏览次数:21  
标签:字节 int 整数 char 数组 printf include bytearr ba

1.c

#include<stdio.h>
#include<string.h>
#include"utils.h"

//20211102
int main() {
	int p;
	char bytearr[100];
	printf("请输入一个整型数字\n");
	scanf("%d",&p);
	printf("把整型数转化为字节数组\n");
	Int2ByteArr(p,bytearr);
	// 给长度为奇数的字符串首位加一个0
	int length = strlen(bytearr);
	if (length % 2 != 0) {
		memmove(bytearr + 1, bytearr, length + 1);
		bytearr[0] = '0';
	}
	printf("字节数组为:");
	printf("{%s}\n",bytearr);

	char barr[100];
	int h;
	printf("请输入一个字节数组:");
	scanf("%s",barr);
	printf("把字节数组转化为整型数字:");
	ByteArr2Int(barr,&h);
	printf("%d\n",h);
}

utils.c

#include<stdio.h>
#include"utils.h"
#include<string.h>
//20211102
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) {
	int j;
	int a;
	int sum=0;
	int k=i;
	for(j=0;; j++) {
		k=k/16;
		if(k!=0)
			sum++;
		else
			break;
	}
	for(j=sum; j>=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;

	}
}

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

标签:字节,int,整数,char,数组,printf,include,bytearr,ba
From: https://www.cnblogs.com/yzy3655921/p/18228107

相关文章

  • 数据转换-整数字节数组
    任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,使用git管理代码,gitcommit不能少于5次1参考《GMT0009-2012SM2密码算法使用规范》第6节“数据转换”在utils.h和utils.c中完成整数与8位字节串的转换功能(10'):intInt2ByteArr(unsignedinti,unsigned......
  • 数据结构--数组(详细分析)
    目录......
  • 程序分享--常见算法/编程面试题:删除有序数组中的重复项 II
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。或关注博主免费专栏【程序......
  • Shell阶段10 awk工作原理, 内部变量, 正则/比较/条件/逻辑表达式, 判断语句, 循环语
    AWK什么是awkawk是一个编程语言主要作用:对文本和数据的处理awk处理数据的流程1.扫描文件内容,从上到下进行扫描,按照行进行处理2.寻找匹配到的内容,进行读取到特定的模式中,进行行处理3.行满足指定模式动作,则输出到屏幕上面,不满足丢弃4.接着读取下一行继续处理,接着循环,直......
  • 每天写两道(四)最大子数组和、手撕快排
    53.最大子数组和.-力扣(LeetCode)给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1]的和最大,为 6。......
  • 双是整数卡片
    题目见《整数卡片》《又是整数卡片》---------------------------------------------------------------------------------------------------------------------------------#include<bits/stdc++.h>usingnamespacestd;structnode{  intamo,num;  boolo......
  • leetcode-280. 摆动数组
    给你一个的整数数组nums,将该数组重新排序后使nums[0]<=nums[1]>=nums[2]<=nums[3]...简单想法排序双指针,一前一后插入贪心?猜的假定前i个已经摆动,i+1存在奇、偶两种情况奇数——若nums[i+1]>=nums[i+2]则符合条件,若nums[i+1]<nums[i+2],尝试交换......
  • leetcode-624.数组列表中的最大距离
    数组列表中的最大距离给定m个数组,每个数组都已经按照升序排好序了。现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。两个整数a和b之间的距离定义为它们差的绝对值|a-b|。你的任务就是去找到最大距离目标题意中的绝对值|a-b|等价于选取......
  • JAVA IO流(File类,字节流,字符流)
    File类分隔符:a.路径名称分隔符:windows:linux:/b.路径分隔符:一个路径和其他路径之间的分隔符;1.概述:文件和目录(文件夹)路径名的抽象表示2.File的静态成员staticStringpathSeparator:与系统有关的路径分隔符,为了方便,它被表示为一个字符串。staticStrings......
  • Day 9:2829. k-avoiding 数组的最小总和
    Leetcode2829.k-avoiding数组的最小总和给你两个整数n和k。对于一个由不同正整数组成的数组,如果其中不存在任何求和等于k的不同元素对,则称其为k-avoiding数组。返回长度为n的k-avoiding数组的可能的最小总和。n个不同正整数的最小总和,那就是从1......