2016-12-05 168 views
-1

我有一個問題,如何找到unsigned char的長度? 這裏是我的無符號的字符:如何使用C計算無符號字符的長度?

unsigned char tlv_buffer = "DF04024500DF0C03125050"; 

請每個人都知道幫助我嗎?

+1

你的初始化是錯誤的。 –

+0

通過語言定義,無符號字符的大小是1。它的長度在任何8位非變量字符編碼上也是1(與UTF8類似,它可以是部分字符,而對於UTF32,一個無符號字符恰好是單個字符的四分之一) – hyde

+0

@George實際上這是違反約束(由C標準錯誤) –

回答

0
#include <stdio.h> 
#include <string.h> 

int main(){ 
printf("Hello, World!\n"); 
unsigned char tlv_buffer[] = "DF0402df4500DF0C03125050"; 
int length = strlen(tlv_buffer); 
printf("Length is %d \n", length); 
return 0; 
} 

//剛測試過。它的工作

+0

祝你好運運行 – George

+0

tlv_buffer需要是一個指針 – staringlizard

+1

@staringlizard它只是需要的東西,衰變成一個指針 – George

4

你應該像初始化:

unsigned char *tlv_buffer = "DF04024500DF0C03125050";

,然後計算使用strlen

int tlv_buffer_length = strlen((char*) tlv_buffer)長度;

或@ M.M在評論中指出起來:

char tlv_buffer [] = "DF04024500DF0C03125050";

int tlv_buffer_length = strlen(tlv_buffer);

+0

我會補充說,它會簡化代碼使用簡單的'char *'作爲緩衝區類型(或'char []') –

+0

你的意思是? char * tlv_buffer =(char *)「DF04024500DF0C03125050」; int tlv_buffer_length = strlen(tlv_buffer); – dreamcrash

+0

不需要強制轉換。 (使用反引號代碼標記) –

相關問題