2013-02-03 267 views
0

這個問題是純粹的teoretical,而不是正確的做法,但我們需要將char'x'轉換爲網絡格式嗎?我在所有情況下都會被吸引:總是/有時/從不 我個人認爲我應該但我需要確定,比你。通過套接字發送的字符

+0

*哪個*「網絡格式」?如果它是*網絡字節順序*,則比通過@G_G查看答案。 –

+0

我們在這裏談論兩件不同的事情。我認爲*網絡字節順序*是指八位字節順序(特別是8位字節)的一種形式,而C中的一個字節的CHAR_BIT位可能大於或等於8. – Sebivor

回答

3

沒有,char是一個字節值,因此字節順序並不重要

3

當你想它(字節序,再用ntohl ntohs和,等...),沒有。

基本上,我應該提出一個非網絡限制的警告:任何未附加其編碼的字符串都是不可讀的。

假設您通過網絡發送/存儲或不存儲字符串「Français」,'ç'必須使用字符編碼進行編碼。不指定字符編碼意味着如果您使用utf8對其進行編碼,但您的讀者認爲它是latin1,則它可以被讀爲「Franais」。

所以,你有兩種解決方案:

  • 寫下一個規格爲你的應用程序只使用相同的字符編碼
  • 將元數據上的頭某處指定爲未來的字符串編碼(如HTTP) 。
+0

是的,更一般地說任何*數據*不是附上它的編碼是不可讀的。這是超越網絡乃至計算機科學的基本規則。兩端需要共享相同的編碼/解碼規則或不能進行通信。 –