StringをHEX表示したいnoですが

解決


Msun  2005-11-04 17:55:22  No: 18433

送信データ(HEX:00,21,93,03,b1)をCommXでの受信バッファの表示は、#0,'!',#147,#3,'ァ'です。これを、00219303b1 と変換表示したいのですがうまくいきません。どなたか教えてください。ちなみに環境は、Delphi2005,
WinXpです。よろしくお願いします。


宣伝  2005-11-04 18:20:09  No: 18434

どううまくいきませんか?


宣伝  2005-11-04 18:22:14  No: 18435

IntToHexは?


Msun  2005-11-04 22:05:32  No: 18436

IntToHex使っていますが、21をIntToHexすると15となり表示すると'!'。
うまくいきません。


りおりお  2005-11-04 22:28:00  No: 18437

> IntToHex使っていますが、21をIntToHexすると15となり表示すると'!'。

数値と文字、文字コードについての知識が必要ですね。あと10進と16進数についても。

数値の十進表示の21は、16進表示で15となり、一方21を16進数として
これを文字コードとして表示すると '!' に対応しています。

混乱しなければ、うまくいっているようですが。


Msun  2005-11-04 23:12:43  No: 18438

#0   -> '00'
'!'  -> '21'
#147 -> '93'
#3   -> '03'
'ア'  -> 'b1'
と変換表示したいのですがうまくいきません。


孫の手  2005-11-04 23:26:22  No: 18439

var
  Buf: PChar = #$00#$21#$93#$03#$b1#$00;

procedure TForm1.ButtonXClick(Sender: TObject);
  function func(Buf: PChar; Size: Integer): string;
  var
   i: Integer;
  begin
   result := '';
   for i:=0 to Pred(Size) do begin
  result := result + IntToHex(Byte(Buf[i]), 2);
   end;
  end;
begin
  MemoX.Lines.Add(func(Buf, 5));
end;


宣伝  2005-11-04 23:38:38  No: 18440

IntToHex(Ord('!'), 2) = '21'

'!' = 33 = $21


Msun  2005-11-05 02:04:12  No: 18441

宣伝さん、りおりおさん  そして  孫の手さんへ
アドバイスありがとうございました。
目的の受信表示が出来るようになりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加