hextobin 和 bintohex
有没有使用成功的例子,试了几次都不成。 最初的目的是把一个图片信息存成字符串 然后用的时候转换。
有没有使用成功的例子,试了几次都不成。 最初的目的是把一个图片信息存成字符串 然后用的时候转换。
解决方案 »
- ????????????delphi
- 在VC/MFC 和 DELPHI 徘徊,希望大家给点建议!
- 一个有关窗体大小的问题,帮忙看看!
- 求写DLL程序的实例与方法(分不够可以再加)
- DBGrid1中某一列的宽度能不能动态给出?
- 一个看来很简单的问题????
- 如何控制DBGRID中焦点的移动定位?
- 简单的问题——文件操作,快来呀!
- 请大家快帮忙看看:Query2: Can not modify a readonly dataset!!!
- 怎样做服务器端的安装盘?
- 如何在DELPHI 7 下取BIOS ID?
- server面板里Word服务的WordApplication1.ActiveDocument.SaveAs()的参数好长啊,足足16个,应该怎么填啊?
// and assign the code to form createvar
E: Extended;
//Make sure there is room for null terminator
Buf: array[0..SizeOf(Extended) * 2] of Char;
begin
E := Pi;
Label1.Caption := Format('Pi starts off as %.15f', [E]);
BinToHex(@E, Buf, SizeOf(E));
//Slot in the null terminator for the PChar, so we can display it easily
Buf[SizeOf(Buf) - 1] := #0;
Label2.Caption := Format('As text, the binary contents of Pi look like %s', [Buf]);
//Translate just the characters, not the null terminator
HexToBin(Buf, @E, SizeOf(Buf) - 1);
Label3.Caption := Format('Back from text to binary, Pi is now %.15f', [E]);
end;
// Pic_conversion.pas
// ³ÌÐò¹¦ÄÜ£º½â¾öͼÏó(.jpg)ÔÚMIDASÖпͻ§¶ËÓë·þÎñ¶ËµÄ´«µÝ
// ±àдʱ¼ä£º2003.12.4
// ³ÌÐò˼Ï룺ÀûÓÃBase 64 Encoding/DecodingÖеÄ
// EncodeString/DecodeString ½«Í¼Ïó(.jpg)½øÐÐ
// ±àÂë/½âÂëºó£¬×ªÎªStringÀàÐͽøÐд«µÝ
//
// function EncodeString(const Input: string): string;
// function DecodeString(const Input: string): string;
/////////////////////////////////////////////////////
unit Pic_conversion; interface uses
SysUtils, Classes, jpeg, EncdDecd; type
TPic = class(Tobject)
private
FFilename: String; // ͼÏó(.jpg)ÎļþλÖÃ
function GetFilename: String;
procedure SetFilename(Value: String);
public
property Filename : String read GetFilename write SetFilename; function PictoStream(var Ffilename: String): String;
procedure StreamtoPic(var target: String);
end; implementation { TPic } function TPic.GetFilename: String;
begin
Result := FFilename;
end; // Á÷תΪͼƬÎļþ ·þÎñ¶Ëµ÷ÓÃ
procedure TPic.StreamtoPic(var target: String);
var ams : TmemoryStream;
ass : TstringStream;
begin
ass := TStringStream.Create(DecodeString(target)); // ½âÂëBase 64תString
ams := TmemoryStream.Create;
try
ams.LoadFromStream(ass);
ams.SaveToFile('c:\temp.jpg');
finally
ass.Free;
ams.Free;
end;
end; procedure TPic.SetFilename(Value: String);
begin
if Value <> '' then FFilename := Value;
end; // ͼƬÎļþתΪÁ÷ ¿Í»§¶Ëµ÷ÓÃ
function TPic.PictoStream(var Ffilename: String): String;
var ass : TstringStream;
ams : TmemoryStream;
begin
ams := TmemoryStream.Create;
ass := Tstringstream.Create('');
try
ams.LoadFromFile(Ffilename);
ams.SaveToStream(ass);
Result := EncodeString(ass.DataString); //Stirng ±àÂë³ÉBase 64
finally
ams.Free;
ass.Free;
end;
end; end.
// and assign the code to form createvar
E: Extended;
//Make sure there is room for null terminator
Buf: array[0..SizeOf(Extended) * 2] of Char;
begin
E := Pi;
Label1.Caption := Format('Pi starts off as %.15f', [E]);
BinToHex(@E, Buf, SizeOf(E));
//Slot in the null terminator for the PChar, so we can display it easily
Buf[SizeOf(Buf) - 1] := #0;
Label2.Caption := Format('As text, the binary contents of Pi look like %s', [Buf]);
//Translate just the characters, not the null terminator
HexToBin(Buf, @E, SizeOf(Buf) - 1);
Label3.Caption := Format('Back from text to binary, Pi is now %.15f', [E]);
end;
// Pic_conversion.pas
// 程序功能:解决图象(.jpg)的传递
// 编写时间:2003.12.4
// 程序思想:利用Base 64 Encoding/Decoding中的
// EncodeString/DecodeString 将图象(.jpg)进行
// 编码/解码后,转为String类型进行传递
//
// function EncodeString(const Input: string): string;
// function DecodeString(const Input: string): string;
/////////////////////////////////////////////////////
unit Pic_conversion; interface uses
SysUtils, Classes, jpeg, EncdDecd; type
TPic = class(Tobject)
private
FFilename: String; // 图象(.jpg)文件位置
function GetFilename: String;
procedure SetFilename(Value: String);
public
property Filename : String read GetFilename write SetFilename; function PictoStream(var Ffilename: String): String;
procedure StreamtoPic(var target: String);
end; implementation { TPic } function TPic.GetFilename: String;
begin
Result := FFilename;
end; // 流转为图片文件 服务端调用
procedure TPic.StreamtoPic(var target: String);
var ams : TmemoryStream;
ass : TstringStream;
begin
ass := TStringStream.Create(DecodeString(target)); // 解码Base 64转String
ams := TmemoryStream.Create;
try
ams.LoadFromStream(ass);
ams.SaveToFile('c:\temp.jpg');
finally
ass.Free;
ams.Free;
end;
end; procedure TPic.SetFilename(Value: String);
begin
if Value <> '' then FFilename := Value;
end; // 图片文件转为流 客户端调用
function TPic.PictoStream(var Ffilename: String): String;
var ass : TstringStream;
ams : TmemoryStream;
begin
ams := TmemoryStream.Create;
ass := Tstringstream.Create('');
try
ams.LoadFromFile(Ffilename);
ams.SaveToStream(ass);
Result := EncodeString(ass.DataString); //Stirng 编码成Base 64
finally
ams.Free;
ass.Free;
end;
end; end.
var
hex:string;
binary:array[0..7] of char;
begin
hex:='414243444546';
HexToBin(PChar(hex),binary,8);
caption:='';
Label1.caption:=binary; //显示:'ABCDEF','A'的ASCII值用16进制表达是$41,'B'是$42...
end;
实在要用就用这个函数吧:
function TForm1.HexToBin(HexStr: String): String;
const
BinLst1: array ['0'..'9'] of String[4]
= ('0000','0001','0010','0011','0100','0101','0110','0111','1000','1001');
BinLst2: array ['A'..'F'] of String[4]
= ('1010','1011','1100','1101','1110','1111');
HexChars: set of char = ['0'..'9', 'A'..'F', 'a'..'f'];
var
I, X: Integer;
ch: Char;
begin
X:= 0; Result:= '';
for I:= 1 to Length(HexStr) do
if HexStr[I] in HexChars then begin
X:= I; Break;
end;
if X = 0 then Exit;
for I:= X to length(HexStr) do begin
ch:= upcase(HexStr[I]);
case ch of
'0'..'9': Result:= Result + BinLst1[ch];
'A'..'F': Result:= Result + BinLst2[ch];
else Break;
end;{case}
end;
end;