日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
學(xué)習(xí)Linux:掌握十六進(jìn)制轉(zhuǎn)字符串函數(shù)的技巧(linux十六進(jìn)制轉(zhuǎn)字符串函數(shù))

Linux是一種具有廣泛應(yīng)用的操作系統(tǒng),擁有著眾多的用戶(hù)與開(kāi)發(fā)者。對(duì)于學(xué)習(xí)Linux的朋友們來(lái)說(shuō),了解Linux系統(tǒng)內(nèi)部的機(jī)制及相應(yīng)的命令與函數(shù)是非常必要的。其中,十六進(jìn)制與字符串的轉(zhuǎn)換是了解Linux系統(tǒng)底層原理的重要環(huán)節(jié)。本文將向讀者介紹如何掌握十六進(jìn)制轉(zhuǎn)字符串函數(shù)的技巧。

高安網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,高安網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為高安1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的高安做網(wǎng)站的公司定做!

一、什么是十六進(jìn)制與字符串

在介紹十六進(jìn)制和字符串之間的轉(zhuǎn)換方法之前,我們先來(lái)了解一下這兩個(gè)概念。

1. 十六進(jìn)制

十六進(jìn)制是計(jì)算機(jī)中常用的一種進(jìn)制,它以16為基數(shù)。因?yàn)槲覀兤匠K玫氖M(jìn)制只有十個(gè)數(shù)字,所以,當(dāng)數(shù)字達(dá)到10個(gè)以上的時(shí)候,我們就需要使用字母來(lái)表示了。十六進(jìn)制使用0-9和A-F這16個(gè)字符表示,其中A表示10,B表示11,C表示12,D表示13,E表示14,F(xiàn)表示15。十六進(jìn)制的用途非常廣泛,它可以用來(lái)表示顏色、地址、編碼等等。

2. 字符串

字符串是一系列字符的,這些字符可以是任何可打印的符號(hào),比如數(shù)字、字母、標(biāo)點(diǎn)符號(hào)等等。字符串在計(jì)算機(jī)中有著廣泛的應(yīng)用,比如我們平常使用的文本文件等等都是字符串的一種形式。

二、如何將十六進(jìn)制轉(zhuǎn)換成字符串

1. 已知字符串轉(zhuǎn)換成十六進(jìn)制

在Linux系統(tǒng)中,我們可以使用od命令來(lái)將字符串轉(zhuǎn)成十六進(jìn)制。比如,我們有一個(gè)文件example.txt,文件內(nèi)容為“Hello world!”(不帶引號(hào)),我們可以使用以下命令將其轉(zhuǎn)成十六進(jìn)制輸出:

“`bash

od -tx1 example.txt

“`

執(zhí)行以上命令后,我們可以得到如下輸出結(jié)果:

“`

0000000 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 0a

0000015

“`

這個(gè)結(jié)果中,每?jī)蓚€(gè)字符代表輸入字符串中的一個(gè)字符。例如,48就代表字符H,65代表字符e,以此類(lèi)推。需要注意的是,輸出結(jié)果中會(huì)包含一個(gè)換行符,我們可以使用sed命令將其刪除,具體命令如下:

“`bash

od -tx1 example.txt | cut -c 9- | sed ‘s/ //g’ | tr -d ‘\n’

“`

執(zhí)行以上命令后,我們得到的結(jié)果為:

“`

48656c6c6f20236f726c64210a

“`

這就是文件example.txt的十六進(jìn)制表示。

2. 已知十六進(jìn)制轉(zhuǎn)換成字符串

同樣的,在Linux系統(tǒng)中,我們也可以使用以下命令將十六進(jìn)制轉(zhuǎn)成字符串:

“`bash

echo “48656c6c6f20236f726c64210a” | xxd -r -p

“`

執(zhí)行以上命令后,我們可以得到如下輸出結(jié)果:

“`

Hello world!

“`

以上命令中,xxd命令可以將十六進(jìn)制轉(zhuǎn)成指定形式的數(shù)據(jù),這里我們需要指定-r和-p這兩個(gè)參數(shù),其中-r表示將十六進(jìn)制轉(zhuǎn)成二進(jìn)制,-p表示刪除二進(jìn)制數(shù)據(jù)中的空格和換行符。最終的結(jié)果就是字符串“Hello world!”(不帶引號(hào))。

三、如何自己實(shí)現(xiàn)十六進(jìn)制與字符串的轉(zhuǎn)換函數(shù)

在Linux系統(tǒng)中,我們也可以通過(guò)自己編寫(xiě)程序來(lái)實(shí)現(xiàn)十六進(jìn)制與字符串的轉(zhuǎn)換。這里,我們就介紹一下如何通過(guò)C語(yǔ)言編寫(xiě)這些函數(shù)。

1. 十六進(jìn)制轉(zhuǎn)字符串

我們可以通過(guò)以下函數(shù)將十六進(jìn)制轉(zhuǎn)成字符串:

“`c

#include

#include

void hex2str(const unsigned char *hex, int len, char *str){

int i;

for (i = 0; i

sprintf(str + i * 2, “%02x”, hex[i]);

}

str[len*2] = ‘\0’;

}

“`

其中,hex2str函數(shù)有三個(gè)參數(shù),分別為:

– hex:需要轉(zhuǎn)換的十六進(jìn)制數(shù)據(jù);

– len:十六進(jìn)制數(shù)據(jù)的長(zhǎng)度;

– str:轉(zhuǎn)換成的字符串。

在函數(shù)中,我們使用sprintf函數(shù)將每個(gè)字節(jié)轉(zhuǎn)成兩個(gè)字符的十六進(jìn)制表示,并將其拼接成字符串。

2. 字符串轉(zhuǎn)十六進(jìn)制

我們可以通過(guò)以下函數(shù)將字符串轉(zhuǎn)成十六進(jìn)制:

“`c

#include

#include

void str2hex(const char *str, int len, unsigned char *hex){

int i;

for (i = 0; i

sscanf(str + i * 2, “%2hhx”, &hex[i]);

}

}

“`

其中,str2hex函數(shù)有三個(gè)參數(shù),分別為:

– str:需要轉(zhuǎn)換的字符串;

– len:字符串的長(zhǎng)度;

– hex:轉(zhuǎn)換成的十六進(jìn)制數(shù)據(jù)。

在函數(shù)中,我們使用sscanf函數(shù)將字符串中的兩個(gè)字符轉(zhuǎn)成一個(gè)字節(jié)的十六進(jìn)制表示,并將其存儲(chǔ)在hex數(shù)組中。

四、

相關(guān)問(wèn)題拓展閱讀:

  • 如何在C51中將十六進(jìn)制數(shù)字轉(zhuǎn)換為字符串?
  • 將一個(gè)字符串怎么轉(zhuǎn)化成十六進(jìn)制數(shù)

如何在C51中將十六進(jìn)制數(shù)字轉(zhuǎn)換為字符串?

什么錯(cuò)誤?我使用W78E365軟派枯仿真缺嘩下面的測(cè)試程序沒(méi)有問(wèn)題啊伏羨行。C語(yǔ)言的函數(shù)大部分有,但實(shí)際不需用他們,資源占用多,盡量避開(kāi),51的資源比較小。測(cè)試程序是:

void main (void) {

char idata buf ;

int n=0;

int a,b;

float pi;

a = 123;

b = 456;

pi = 3.14159;

n = sprintf (buf, “%f\n”, 1.1);

n += sprintf (buf+n, “%d\n”, a);

n += sprintf (buf+n, “%d %s %g”, b, “—“, pi);

while (1);

}

樓下的 太不敬爛專(zhuān)業(yè)了, C51 的內(nèi)存是很小的, 怎么可能去 調(diào)用亮和漏sprintf函數(shù)棚洞呢?

要精簡(jiǎn), 代碼少, 速度快. 占用資源少, 必定的C51啊, 不是電腦.

參考我的代碼,

char str;

char aCC=”ABCDEF”;

void toHex(char a)

{

char Hi,Lo;

Hi=(a >> 4) & 0x0F; //取二進(jìn)制位的前4位

Lo =a & 0x0f; //取二進(jìn)制位的后4位

str=aCC;

str=aCC;

str=’\0′;

將一個(gè)字符串怎么轉(zhuǎn)化成十六進(jìn)制數(shù)

主要有兩個(gè)方法,其實(shí)都是對(duì)現(xiàn)有函數(shù)的使用:

方法1: sscanf()

函數(shù)名: sscanf

功 能: 從字符串格式化輸入

用 法: int sscanf(char *string, char *format);

以上的 format 為 %x 就是將字符悔旁神串格式化為 16 進(jìn)制數(shù)

例子:?jiǎn)⑶?/p>

#include

void main()

{

char* p = “0x1a”;

int nValude = 0;

sscanf(p, “%x”, &nValude);

printf(“碧虧%d\r\n”, nValude);

}

輸出:

方法2: strtol()

函數(shù)名: strtol

功 能: 將字符串轉(zhuǎn)換為長(zhǎng)整數(shù)

用 法: long strtol(char *str, char **endptr, int base);

上面的base就是我們要轉(zhuǎn)換為幾進(jìn)制數(shù)

例子:

#include

#include

void main()

{

char* p = “0x1b”;

char* str;

long i = strtol(p, &str, 16);

printf(“%d\r\n”, i);

}

輸出:

其實(shí)還有一種方法,就是用一個(gè)初始化為0~9~a~f的字符串?dāng)?shù)組,也就是一個(gè)十六進(jìn)制對(duì)應(yīng)表,用這個(gè)對(duì)應(yīng)表即可算出一個(gè)十六進(jìn)制字符串的數(shù)值,但這種發(fā)發(fā)太麻煩了,不推薦使用。

主要有兩個(gè)方法,其實(shí)都是對(duì)現(xiàn)有函數(shù)的使用:

方法1: sscanf()

函數(shù)名: sscanf

功 能: 從

字符串

格式化輸入

用 法: int sscanf(char *string, char *format);

以上的 format 為 %x 就是將字符串格式化為 16 進(jìn)制數(shù)

例子:

#include

void main()

{

char* p = “0x1a”;

int nValude = 0;

sscanf(p, “%x”, &nValude);

printf(“%d\r\n”, nValude);

}

輸出:

方法2: strtol()

函數(shù)名: strtol

功 能: 將字符串轉(zhuǎn)換為長(zhǎng)整數(shù)

用 法: long strtol(char *str, char **endptr, int base);

上面的base就是我們要轉(zhuǎn)換為啟悄幾進(jìn)制數(shù)

例子:

#include

#include

void main()

{

char* p = “0x1b”;

char* str;

long i = strtol(p, &str, 16);

printf(“%d\r\n”, i);

}

輸出:

其實(shí)碧虧還有一種方法,就是用一個(gè)初始化為0~9~a~f的字符串?dāng)?shù)組,也就是一個(gè)

十六進(jìn)制

關(guān)于linux十六進(jìn)制轉(zhuǎn)字符串函數(shù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專(zhuān)業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


網(wǎng)頁(yè)標(biāo)題:學(xué)習(xí)Linux:掌握十六進(jìn)制轉(zhuǎn)字符串函數(shù)的技巧(linux十六進(jìn)制轉(zhuǎn)字符串函數(shù))
轉(zhuǎn)載來(lái)于:http://www.dlmjj.cn/article/dpsgcce.html