unsignedcharMD[16]; MD5((unsignedchar*)p,statbuf.st_size,MD);//获得MD5值 适用于mmap传输charbuffer[1000]={0};for(inti =0; i <16; i++) {//格式化输str,每unsigned char 转换字符占两位置%x写输%X写输sprintf(buffer + i*2,"%02x", MD[i]); }...
但是第一位是符号位,而单片机用的C语言中常常不牵扯负数,所以更常见的就是使用无符号的char(unsigned char),再定义为uint8_t(typedef unsigned char uint8_t;),这样子就可以用8个二进制位表示成2个16进制的数,如1111 1110就是0xFE,如果需要的不是16进制数,而是一个字符,那么可以用以下方法来实现16进制转为...
(char)(((num>> i)&1)+'0');这一句取出num的第i位(i=0,1...),lz写个循环把所有位打出来就可以了
unsigned char src[6] = {0x12, 0x32,0x56,0x78,0x90,0xab};char buffer[20];//维数定义大些 for(int i=0;i<6;i++)sprintf( buffer+i*2,"%x",src[i]);//格式化输出到buffer,每个unsigned char 转换为字符后占两个位置,%x小写输出,%X大写输出 printf("%s\n",buffer);return 0...
s = (unsigned char*)c4; while(*s != 0) { printf("%3d",*s); s++; } } 输出如下: 输出英文字符及空格内码 97 98 99 32 65 66 67 将unsigned char转为char后输出 你好 你好 输出汉字内码 196227186195 将char字符串转为unsigned char字符串 ...
int length = 9;unsigned char s_src[length] = {0xFE,0x01,0x52,0xFF,0xEF,0xBA,0x35,0x90,0xFA};unsigned char IntToHexChar(unsigned char c){ if (c > 9)return (c + 55);else return (c + 0x30);} int main(){ unsigned char temp;int i;for (i=0; i<length; ...
原先的数据类型是uint8_t,熟悉单片机的都知道这个的含义,其实也就是unsigned char ,说到底还是个char,但偏偏要求表示成’A”B’两个char,然后我内心当然是拒绝的,但没有办法,还是开动脑筋实现了这个不合理的需求。代码如下: #include <stdio.h> #include <stdlib.h> ...
void convertUnCharToStr(char* str, unsignedchar* UnChar,int ucLen) { int i = 0; for(i = 0; i < ucLen; i++) { //格式化输str,每unsigned char 转换字符占两位置%x写输%X写输 sprintf(str + i * 2,"%02x", UnChar[i]);
char*itoa(int num,char*str,int radix){char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//索引表unsigned unum;//存放要转换的整数的绝对值,转换的整数可能是负数int i=0,j,k;//i用来指示设置字符串相应位,转换之后i其实就是字符串的长度;转换后顺序是逆序的,有正负的情况,k用来指示调整顺序的开始...
2.字符串转16进制 #include"stdio.h"#include"stdlib.h"#include"string.h"char*strCom="1D1213AB6FC1718B19202122232425A6";intStringToHex(char*str,unsignedchar*out,unsignedint*outlen){char*p=str;charhigh=0,low=0;inttmplen=strlen(p),cnt=0;tmplen=strlen(p);while(cnt<(tmplen/2)){high=(...