日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

字符串10进制、16进制、ASSIC的互转

發(fā)布時(shí)間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串10进制、16进制、ASSIC的互转 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 動(dòng)態(tài)的10進(jìn)制字符串轉(zhuǎn)16進(jìn)制ASSIC

#include <stdio.h>
#include <string.h>
#include <malloc.h>
char *DecToHex(char *pHex,char *pDec,int Declen)
{
?? ?int ? ? ? i,Hexlen = Declen *2;
?? ?char ? ? ? ?hex[] = "0123456789";
?? ?pHex = (char *)malloc(sizeof(char)*Hexlen);
?? ?for (i = 0; i < Declen; i++)
?? ?{
?? ??? ?*pHex++ = hex[*pDec>>4];
?? ??? ?*pHex++ = hex[*pDec++ & 0x0F];
?? ?}
?? ?*pHex = '\0';
?? ?return pHex -Hexlen;
}
int main()
{
?? ?char Dec[] = "01234";
?? ?char *pHex = NULL;
?? ?printf("-------------10進(jìn)制字符串----------\n");
?? ?printf("%s\n",Dec);
?? ?printf("-------------16進(jìn)制字符串----------\n");
?? ?printf("%s\n", DecToHex(pHex,Dec,strlen(Dec)));
?? ?printf("\n\n\n");
}

?

2. 靜態(tài)的10進(jìn)制字符串轉(zhuǎn)16進(jìn)制ASSIC

#include <stdio.h>
#include <string.h>
#include <malloc.h>
char *DecToHex(char *pHex,char *pDec,int Declen)
{
?? ?int ? ? ? i,Hexlen = Declen *2;
?? ?char ? ? ? ?hex[] = "0123456789";
?? ?for (i = 0; i < Declen; i++)
?? ?{
?? ??? ?*pHex++ = hex[*pDec>>4];
?? ??? ?*pHex++ = hex[*pDec++ & 0x0F];
?? ?}
?? ?*pHex = '\0';
?? ?return pHex -Hexlen;
}
int main()
{
?? ?char Dec[] = "01234";
?? ?char Hex[11];
?? ?printf("-------------10進(jìn)制字符串----------\n");
?? ?printf("%s\n",Dec);
?? ?printf("-------------16進(jìn)制字符串----------\n");
?? ?printf("%s\n", DecToHex(Hex,Dec,strlen(Dec)));
?? ?printf("\n\n\n");
}

?

3. ASSIC字符串轉(zhuǎn)16進(jìn)制字符串

使用函數(shù)需要注意的是返回的串是在堆上通過(guò) calloc 分配的,所以,記得使用完返回值釋放該塊,并且將指向該塊的指針 =NULL 。?

char *chstohex ( char* chs )
{
??? char hex[16] = { '0', '1', '2', '3', '4', '5', '6', \
??? ??? '7', '8','9', 'A', 'B', 'C', 'D', 'E', 'F'
??? };

??? int len = strlen ( chs );
??? char* ascii = NULL ;
??? ascii = (char*)calloc ( len * 3 + 1, sizeof(char) );??? ??? ??? // calloc ascii
????
??? int i = 0;
??? while( i < len )
??? {
??? ??? ascii[i*2] = hex[(int)( (char)chs[i] / 16 )] ;
??? ??? ascii[i*2 + 1] = hex[(int)( (char)chs[i] % 16 )] ;
??? ??? ++i;
??? }

??? return ascii;??? ??? ??? ??? ??? // ascii 返回之前未釋放
}

?

4. 16進(jìn)制字符串轉(zhuǎn)ASSIC字符串?

使用函數(shù)需要注意的是返回的串是在堆上通過(guò) calloc 分配的,所以,記得使用完返回值釋放該塊,并且將指向該塊的指針 =NULL 。??

char *hextochs ( char* ascii )
{
??? int len = strlen ( ascii ) ;
??? if( len%2 != 0 )
??? ??? return NULL ;
??? char *chs = NULL ;
??? chs = (char*)calloc( len / 2 + 1, sizeof(char) );??? ??? ??? ??? // calloc chs

??? int? i = 0 ;
??? char ch[2] = {0};
??? while( i < len )
??? {
??? ??? ch[0] = ( (int)ascii[i] > 64 ) ? ( ascii[i]%16 + 9 ) : ascii[i]%16 ;
??? ??? ch[1] = ( (int)ascii[i + 1] > 64 ) ? ( ascii[i + 1]%16 + 9 ) : ascii[i + 1]%16 ;
??? ????
??? ??? chs[i/2] = (char)( ch[0]*16 + ch[1] );
??? ??? i += 2;
??? }

??? return chs ;??? ??? ??? // chs 返回前未釋放
}?

總結(jié)

以上是生活随笔為你收集整理的字符串10进制、16进制、ASSIC的互转的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。