• 締切済み

[Delphi] StrToInt64がしたい

16バイトの文字列を8バイトのint64型に変換したいです 下記コードのようにやってみたのですが上手く動きません 何か間違っている、他に方法などがありましたら教えてください。 function HexToInt64(const S: string): Int64; const hexstr : string = '0123456789abcdefABCDEF'; var I,L,h,m: Integer; j: Int64; p: PByteArray; test: string; begin result:=-1; p := @j; L:=Length(s); test:= ''; if L <> 16 then Exit; for i:=1 to L do if Pos(s[i], hexstr)<=0 then Exit; h:= strtoint('$' + Copy(S,0,8)); CopyMemory(@p[0], @h, 8); m:= strtoint('$' + Copy(S,9,8)); CopyMemory(@p[8], @m, 8); CopyMemory(@j, @p, 16); result:=j; end;

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「上手く動きません」とはどういうことでしょうか? 「具体的に」 ・どのような入力を与えて ・どのような結果を期待したところ ・どのような結果が得られた (あるいはどうなった) のか, きちんと書いてください. まずは, こんな変な書き方をやめて「普通の書き方」をすること. この処理で, なんで CopyMemory を使う必要があるんだろう. Int64 って, 演算できないの? CopyMemory を使うにしても, たぶん引数がおかしい. エンディアンは無関係だろうけど, 複数のバイトからなるデータを「バイトの配列」として扱う際には常に気をつけるべきことだな.

すると、全ての回答が全文表示されます。

関連するQ&A