❶ linux下(用C/C++/QT)串口受到字元串信息,怎麼把它處理成十六進制的字元串,以供數據處理。
如果是通過串口驅動的介面直接讀取字元串信息,則需要查看該介面的定義。
如果是通過c標准庫介面讀取字元串信息,則是按照位元組目讀取。
不管哪種情況,你還需要了解發送端是按怎樣的位元組序發送這些位元組,每一個發送單位的長度是多少,這樣才能給出答案。
你這個問題應該是一個典型的嵌入式系統的問題,比較專業,一般人是幫不到你的,你需要請教業內人士。
滿意請採納。
❷ 怎樣把一個字元串轉換成16進制
主要有兩個方法,其實都是對現有函數的使用:
方法1: sscanf()
函數名: sscanf
功 能: 從字元串格式化輸入
用 法: int sscanf(char *string, char *format[,argument,...]);
以上的 format 為 %x 就是將字元串格式化為 16 進制數
例子:
#include <stdio.h>
void main()
{
char* p = "0x1a";
int nValude = 0;
sscanf(p, "%x", &nValude);
printf("%d\r\n", nValude);
}
輸出:
26
方法2: strtol()
函數名: strtol
功 能: 將字元串轉換為長整數
用 法: long strtol(char *str, char **endptr, int base);
上面的base就是我們要轉換為幾進制數
例子:
#include <stdio.h>
#include <stdlib.h>
void main()
{
char* p = "0x1b";
char* str;
long i = strtol(p, &str, 16);
printf("%d\r\n", i);
}
輸出:
27
其實還有一種方法,就是用一個初始化為0~9~a~f的字元串數組,也就是一個十六進制對應表,用這個對應表即可算出一個十六進制字元串的數值,但這種發發太麻煩了,不推薦使用。
❸ linux 下有個hexmp函數,把二進制換成16進制顯示,有沒有功能相反的函數
vim 自帶的 xxd 就可以完成轉十六進制和反轉的功能,反轉是只要把十六進制數按它轉出的格式排好(右側的顯示符號可以不管),就可以轉換。如果不在乎轉完的十六進制格式,那用 xxd -ps 更方便。
❹ 我在linux環境下用dd命令得到了一個文件,想轉換成16進制文件。
用vim打開文件,在vim編輯器里使用命令%!xxd,文件內容全部變成16進制了。
❺ 如何將字元串轉換為16進制數值
舉個例子:233轉變成e9
233/16 = 14 余數為9
14的十六進制為e,9的十六進制還是9,所以轉換結果為e9.
也就是說:如果相除的結果小於1,則結果是多少就直接轉換
如果結果在1和15之間,則轉換後的結果如本例所示.
依此類推.
再舉個例子:143轉變成e9
143/16 = 8 余數為15
8的十六進制還是8,15的十六進制是f,所以轉換結果為8f.
❻ linux程序怎麼轉換16進制C語言源碼
C/C++ code?
1 char* str="hello";2 char buf[1024] = {0};3 for (int i=0;i<strlen(str);i++)4 {5 snprintf(buf+strlen(buf),1024-strlen(buif),"0x%x",str[i]);6 }
然後發送 buf
❼ 怎麼把一個字元串轉換成16進制數據
由於數據在計算機中的表示,最終以二進制的形式存在,所以有時候使用二進制,可以更直觀地解決問題。但,二進制數太長了。比如int類型佔用4個位元組,32位。比如100,用int類型的二進制數表達將是:000000000000000001100100面對這么長的數進行思考或操作,沒有人會喜歡。
用16進制或8進制可以解決這個問題。因為,進制越大,數的表達長度也就越短。不過,為什麼偏偏是16或8進制,而不其它的,諸如9或20進制呢?
2、8、16,分別是2的1次方,3次方,4次方。這一點使得三種進制之間可以非常直接地互相轉換。8進制或16進制縮短了二進制數,但保持了二進制數的表達特點。
❽ 怎樣把字元串轉成16進制數
字元類型是整型類型的一種,將其轉換成int類型,然後再輸出十六進制形式即可。下面是一個示常式序。
#include<iostream>
usingnamespacestd;
intmain()
{
charstr_test[]="helloworld ";
intlimit=strlen(str_test);
for(intinx=0;inx!=limit;++inx)
//用static_cast將字元類型轉成int類型
cout<<str_test[inx]<<"---hex:"<<hex<<static_cast<int>(str_test[inx])<<" ";
cout<<endl;
return0;
}
程序執行結果:
❾ linux下c中怎樣將字元串轉換為16進制數據
字元串是一個字元數組,一個個字元轉換成16進制數據。可以這樣,
printf("%x\n", 'ab')
運行結果: 6162
❿ 字元串轉換為16進制
有庫函數stroul,原型為unsigned long strtoul(const char *nptr,char
**endptr,int base )
參數1:字元串起始地址
參數2:返回字元串有效數字的結束地址,這也是為什麼要用二級指針的原因。
參數3:轉換基數。當base=0,自動判斷字元串的類型,並按10進制輸出,例如"0xa",就會把字元串當做16進制處理,輸出的為10。更多的下面詳細闡述。