簡體   English   中英

Dart 不打印十六進制字符串

[英]Dart is not printing hex string

我從 tcp/ip 套接字獲得了字符串\x01\x01 ,當我嘗試將其打印到控制台時,沒有 output 即將到來

void main() {
  
  var out = "\x01\x01";
  print("printing out as --> $out <--");
  final runes = out.runes.toList();
  print(runes);

}

它給出了 output 作為

printing out as -->  <--
[1, 1]

dart焊盤鏈接: https://dartpad.dev/?id=854e4479bfec03d7e8fd40621c845567

我嘗試使用十六進制 package並且它給出了Non-hex character detected錯誤。

問題。

  1. 如何將這些類型的字符串打印到控制台?
  2. 如果需要進行一些轉換,我怎么知道數據屬於這些類型?

我的套接字客戶端如下

  socket.listen(
    // handle data from the server
    (Uint8List data) async {
      var serverResponse = String.fromCharCodes(data);
      print('Server: $serverResponse');
      final runes = serverResponse.runes.toList();
      print(runes);
    },

編輯

輸入b'\x01\x01'來自 python 套接字服務器(我無法修改),並且根據這個答案,這是一個有效的十六進制字符串。

要顯示六邊形,您必須像這樣轉義字符:

  var out = '\\x01\\x01';

這會奏效。

我懷疑您誤解了服務器發送的內容。

鑒於您沒有說明服務器語言,我猜想 `ab = b'\x01\x01' 生成一個包含兩個字節的數組,兩個字節的值都為 1。

如果將其視為 ASCII 值,則 1 是不可打印字符。

因此,您需要遍歷數組並將每個字節轉換為合適的視覺格式。

這可能意味着當您看到 1 時,您會打印 x01。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM