㈠ 單片機,c語言編程將16進制轉換為ASC碼
假設16進制是0—9,那麼:
16進制數
+
'0'
=
16進制數對應的ASCII碼30H—39H
16進制的A--F,可以類似的變換。
㈡ 求一個c語言程序代碼,可以把16進制數串轉ascll碼
分析題目,61剛好是a的ascii十六進制值,因此,只需要將『6』『1』轉換成數值0x61就可以了,以下採用移位方法來轉換
#include<stdio.h>
intmain()
{
inti;
charstr[128],ch=0;
gets(str);
for(i=0;str[i];i++)
{
if(str[i]>='0'&&str[i]<='9')
{
ch<<=4;//先左移四位6放到前四位,1放到後四位
ch|=str[i]-'0';//把當前數並到ch中
}
else
{
printf("%c",ch);
}
}
printf("%c ",ch);
return0;
}
㈢ c語言字元與ASCII碼的轉換
#include<stdio.h>
voidmain()
{
unsignedchara;
printf("enterchar:");
scanf("%C",&a);
printf("ascii=%d",a);//強制轉化為ascii碼
}
(3)c語言16進制轉ascii碼擴展閱讀
C語言ASCII編碼的來源
ASCII碼
一個二進制位(Bit)有0、1兩種狀態,一個位元組(Byte)有8個二進制位,有256種狀態,每種狀態對應一個符號,就是256個符號,從00000000到11111111。美國制定了一套英文字元與二進制位的對應關系,稱為ASCII碼,沿用至今。
ASCII碼規定了128個英文字元與二進制的對應關系,佔用一個位元組(實際上只佔用了一個位元組的後面7位,最前面1位統一規定為0)。例如,字母a的的ASCII碼為01100001,那麼你暫時可以理解為字母a存儲到內存之前會被轉換為01100001,讀取時遇到01100001也會轉換為a。
㈣ C語言中如何將某個字元串轉為16進制ascii碼並輸入到另一個字元串中
用sprintf()函數就可以了。
sprintf(*dst,"%x",*src)
dst:目標字元串
scr:源字元串
我回去試了一下,不行
一般的sprintf(*dst,"%s",*src)能把src轉換成指定的格式
可是sprintf(*dst,"%x",*src)時,*dst存了地址!·
修改了一下,以下是例子,有效果了:
#include "stdafx.h"
#include<stdio.h>
void main()
{
char a[9]="a1234",b[20], *p=a;
int j=0;
while(*p!=0){ j+=sprintf(b+j,"%x",*p++);}
printf("%s\n",b);
}
參考資料:http://ke..com/view/1295144.htm#3(網路)
㈤ 單片機中,如何將16進制轉換為ASC碼
1. 16進制數為0~F的組合(例如3FFF, 就像10進制數是0~9的組合一樣), 而ASCII碼是一組符號集合,
它用一個8位(一個位元組)的二進制數來表示字元(因為計算機用二進制數來運算), 其中0~9對應的二進制數為0x30~0x39,
A~F對應的二進制數為0x41~0x46 (小寫a~f為0x61~0x66).
2. 將16進制數轉換為ASCII碼就是將0~F轉換為字元"0"~"F" (在計算機存儲的表示為0x30~0x46). 轉換的演算法可以多種, 比較簡單的演算法如下:
a) 定義一個數組
const byte ASCII[]={0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46}; // byte 為一個位元組的定義
假設i為存儲單個16進制的數字, 則用ASCII[i]即可獲得相應的ASCII碼
b) 也可以用計算的方式
假設i中存儲單個16進制的數字,
if (i > 9)
{
ascii = 0x40 + (i - 9); // A~F
}
else
{
ascii = 0x30 + i; // 0~9
}
3. 多位數的16進制數可以通過逐位分解實現, 例如0x3AD0, 可以分解為3, A, D, 0轉換. 每位16進制數佔半個位元組, 所以很容易利用移位(連續左移4bits)進行分離.
㈥ C語言程序,怎麼把16進制轉成字元:
我想你的問題只是將數字轉換為字元對吧,那麼我就不幫你做全文多行的源碼了,我做了一行轉換的,你可以再在外層嵌套一個循環,並使用二維數組來實現全文多行的ASCII碼轉換:
#include "Stdio.h"
#include "Conio.h"
int main(void)
{
int num[10],i=0;
while(getchar() != '\n')
{
getchar();
scanf("%x",&num[i]);
printf("%c",num[i]);
i++;
}
getch();
return 0;
}
原理是這樣的:
你每次的四個位元組的格式都是\xyy的形式,我只要讀入那個十六進制數就可以了,用scanf("%x",&num[i]);語句就可以讀入十六進制數字,將一行的十六進制數在循環中全部取出存放在一維數組中。
在輸出方面我投了個懶,直接讀入就輸出了,不過這個不是關鍵了,關鍵是以printf("%c",num[i]);語句輸出,編譯器就會自行把十六進制數轉換為ascii碼所對應的字元並輸出。
現在你明白了么,就是以格式化的輸入輸出實現讀入的是十六進制數,輸出的是字元。(那兩個getchar()是分別讀入字元\和x的哈~~)
㈦ 寫一個程式c程序,16進制轉asc碼
#include<stdio.h>
#include<conio.h>
#include<string.h>
#defineN100
intmain()
{
inti,j,n,len;
charst[]="48494A4B4C4D4E4F";
charst2[N];
intchar2num(charch);
for(i=0;i<N;i++)
st2[i]=0;
len=strlen(st);
j=0;
for(i=0;i<len;i+=2)
{
n=char2num(st[i])*16+char2num(st[i+1]);
st2[j++]=n;
}
printf("st2=%s",st2);
getch();
return0;
}
intchar2num(charch)/*將字元轉成數字*/
{
if(ch>='a')
returnch-'a'+10;
elseif(ch>='A')
returnch-'A'+10;
else
returnch-'0';
}
㈧ 16進制轉對應的ASCII碼
輸入字元串,每兩位為一個字元值,然後將這兩位轉成整數,按字元輸出即可!
㈨ C語言字元轉換ASCII碼
#include<stdio.h>
voidmain()
{
unsignedchara;
printf("enterchar:");
scanf("%C",&a);
printf("ascii=%d",a);//強制轉化為ascii碼
}
(9)c語言16進制轉ascii碼擴展閱讀:
在標准ASCII中,其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個位元組中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個位元組中1的個數必須是偶數,若非偶數,則在最高位b7添1。
㈩ c語言 函數十六進制轉換成ascii怎麼寫
#include<stdio.h>
charhextoascii(charhex_byte)
{
charresult;
if((hex_byte>=0)&&(hex_byte<=9))//變成ascii數字
result=hex_byte+0x30;
elseif((hex_byte>=10)&&(hex_byte<=15))//變成ascii大寫字母
result=hex_byte+0x37;
else
result=0xff;
returnresult;
}
main()
{
shorthex_data;
charascii_data[10],i;
printf("Inputhexdata: ");
scanf("%x",hex_data);
while(hex_data)
{
ascii_data[i++]=hextoascii((char)(hex_data%16));
hex_data/=16;
}
printf("Outputasciidata: ");
for(unsignedcharj=0;j<i;j++)
printf("%c",ascii_data[j]);
}