System.SysUtils

System::DynamicArray<System::WideChar> TCharArray

System::TArray__1<System::WideChar> TCharArray;

TCharArray

String TBytes byte

编码类型有:ASCII、8BIT、7BIT、UCS2-BIG、UCS2-LIT、UCS2-80、UCS2-81、UCS2-82、UTF-8、UTF-16(Unicode)

RawToBytes

BytesToRaw

Byte一个字节,能存放0..255,就是unsigned char,小写的byte等价于大写的Byte。

array

TByteDynArray= array of Byte;

TIdBytes= array of Byte;

typedef System::DynamicArray<System::Byte> TIdBytes;

typedef System::DynamicArray<System::Byte> TBytes;

动态数组的写法

DynamicArray<Byte> TBytes;

DynamicArray<int> TInts;

TBytes = TArray<Byte>;

String> TBytes/TByteDynArray

Text.BytesOf()

BytesOf

WideBytesOf()

TBytes bv;
    bv.set_length(8);

bytes=System::Sysutils::BytesOf(Caption);
bytes=System::Sysutils::WideBytesOf(Caption);//value is spec wide

bytes=Caption.BytesOf();

TBytes/TByteDynArray > String

Caption = System::Sysutils::StringOf(barr);
Caption = System::Sysutils::WideStringOf(barr);

String > <Utf8Bytes

TBytes bytes;
 bytes = TEncoding::UTF8->GetBytes(Memo1->Text);

Memo1->Text = TEncoding::UTF8->GetString(bytes);

delphi

TEncoding.UTF8.GetBytes

TBytes/TByteDynArray > Byte *

TBytes bytes;

Byte * bt = &bytes[0];

byte bb[255];

或者

bt = new Byte[bytes.Length];
 memcpy(bt,&bytes[0],bytes.Length);

TBytes初始化memset

TBytes bv;
        bv.set_length(5000);

memset(     &bv[0], 0,bv.Length );

Byte * >TBytes/TByteDynArray

Byte * bt;

TBytes bytes;

bytes = BytesOf(bt, sizeof(bt));

UnicodeString s1;

  1. s1 = "Hello World!";
  1. s1.Length(), ByteLength(s1)

ByteLength

TIdBytes

TIdBytes = array of Byte;

TBytes = TArray<Byte>;

uses IdGlobal;//head file

TIdBytes>String

String  str=BytesToString( AValue: TIdBytes);

TIdBytes>TBytes

BytesToRaw(Buffer,abuffer,Length(Buffer));

SetLength(bs,0);
SetLength(bs,Length(idbs));

BytesToRaw(idbs,bs,Length(idbs));//error

BytesToRaw(idbs,bs[0],Length(idbs));//ok

buf :=TBytes( idbus);//ok

TBytes>TIdBytes

function RawToBytes(const AValue; const ASize: Integer): TIdBytes;

idbs := RawToBytes(bs[0], Length(bs));//必须加下标0,否则就是错是

idbs := RawToBytes(bs, Length(bs));//没有下标0是错的

结构体>TIdBytes

RawToBytes(SendData,SizeOf(SendData));//SendData是结构体变量,不要下标0

UTF8String Bytes>UnicodeString

字节转换为16进制

idbytes to hexString

  1. String hexstr;
  2. for (int i = idbytes.Low; i <= idbytes.High; i++)
  3. {
  4. hexstr += IntToHex(idbytes[i], );
  5. }

delphi

PAnsiChar数组转为字符串

R: array[0..19] of AnsiChar;

sss:ansistring;

astr := AnsiString(r);

StrPCopy(r,astr);

Delphi7升级

AnsiChar(DelphiXE10)= Char(Delpih7)

Delphi7:

Object: array[1..6] of Char;

DelphiXE10,Berlin

Object: array[1..6] of AnsiChar;

sbytes := VarArrayOf([$AA, $EE, $81, $0, $0, $0, $0, $0, $0, $0, $0, $0, $0, $0, $0, $0]);

AnsiString>Bytes>AnsiString

bsa := TEncoding.ANSI.GetBytes(as1);
 as1:= TEncoding.ANSI.GetString(bsa);

假UTF8Sring转换为汉字

UTF8String s8="闫换珍";

AnsiString s8a="闫换珍";

都是6个字节,一个汉字2个字节。

此时,想还原汉字this->Caption=???如何才能显示汉字

  1. AnsiString as21 = s8;//err
  2. AnsiString as22 = AnsiString(s8);//err
  3. AnsiString as2 = s8.c_str();//ok
  4.  
  5. String s991 = s8;//err
  6. String s992 = String(s8);//err
  7. String s99 = s8.c_str();//ok 最可靠

as1:= TEncoding.ANSI.GetString(bs8);//ok

真UTF8String

UTF8String s8=L"闫换珍";//加上L标识才是真正的UTF8,一个汉字3个字节,UnicodeString函数是2个字节。

AnsiString s8a="闫换珍";

TBytes bs81 =TEncoding::UTF8->GetBytes(s8);
TBytes bs82 =TEncoding::UTF8->GetBytes(s8a);

两个bytes里是相等的,正确的。

char dest[256] = {0}; // room for 256 characters
    UnicodeString src = L"闫换珍";
    UnicodeToUtf8(dest, src.c_str(), 256);

//或者     UnicodeToUtf8(dest,256, src.c_str(), src.Length*();

dest与bs81,bs82值相等。

RawByteString srbRaw;
    srbRaw = UTF8Encode(ss);
    //ss = UTF8Decode(srb);
    char  Buf[512] = {0    };
    strcpy(Buf, srbRaw.c_str());

Buf这个也是正确的utf8字节

UTF8String>String

   String  s=s8;

UnicodeString us1 =s8;
    UnicodeString us11 = UTF8ToUnicodeString(s8.c_str());
    UnicodeString us13 = UTF8ToString(s8.c_str());
    UnicodeString us14 = Utf8ToAnsi(s8);
    RawByteString rbs1 = AnsiToUtf8(s8);

word/short/int 简单类型转换为bytes

var
  Buf:TBytes;
  w:Word;
begin
  w:=10;
  Buf:=RawToBytes(w);
end;
var
  Buf:Array[0..1of Byte;
  w:Word;
begin
  w:=10;
  Move(w,Buf[0],2);

end;

doule>Byte[]

byte bt[8];

double ad;
memcpy(&bt[0], (byte*)&ad, 8);

memcpy(&bt[0], (byte*)&ajava, sizeof(double));

  1. #if defined(USE_ENCODING)
  2. TBytes FirstLine; // A dynamic array of bytes
  3. FirstLine.Length = ;
  4. stream = _wfopen(OpenDialog1->Files->Strings[I].c_str(), L"r");
  5. fgets(&FirstLine[], FirstLine.Length, stream);
  6. Memo1->Lines->Append(TEncoding::UTF8->GetString(FirstLine));
  7. fclose(stream);
  8. #else
  9. char FirstLine[];
  10. stream = _wfopen(OpenDialog1->Files->Strings[I].c_str(), L"r");
  11. fgets(FirstLine, sizeof(FirstLine), stream);
  12. Memo1->Lines->Append(UTF8String(FirstLine));
  13. fclose(stream);
  14. #endif

delphi

LBuffer: TBytes;

SetLength(LBuffer, LFileStream.Size);

LFileStream.ReadBuffer(Pointer(LBuffer)^, Length(LBuffer));

C++builder VCL String

String astr="hello";

astr[0]//error,下标正确的是从1开始

StringToOleStr

字符串函数

String ss;

ss.LastDelimiter(" ");

最后一个空格出现的位置,这样就不用循环了

BSTR  bs1;

fun(BSTR *name);

fun(&bs1);

Delphi Berlin 有此函数,int转换为16进制

ai:Integer;
ai:=17;
self.Caption:=ai.ToHexString;

StringList>字符数组

arr:TArray<string>;

list:TStringList;

arr := list.ToStringArray;

TStringDynArray

TMemoryStream>TBytes

LResponse: TMemoryStream;

unsigned char *>AnsiString

AnsiString str1= (char *)buff;

AnsiString str2((const char *)buff);

AnsiString>unsigned char*

strcpy(uchar,AnsiString(str).c.str());

ascii码转16进制

  1. String Asc2Hex(String astr)
  2. {
  3. TBytes bytes;
  4. bytes = TEncoding::ASCII->GetBytes(astr);
  5. String hexstr;
  6. for (int i = bytes.Low; i <= bytes.High; i++)
  7. {
  8. hexstr += IntToHex(bytes[i], );
  9. }
  10.  
  11. return hexstr;
  12. }
  1. String Hex2Asc(String hexStr)
  2. {
  3. int nLen = hexStr.Length();
  4. int j = ;
  5. String ahex;
  6. char achar;
  7. String retstr;
  8. if ( != (nLen % ))
  9. {
  10. return -;
  11. }
  12. for (int i = ; i < nLen; i = i + , j++)
  13. {
  14. ahex = hexStr.SubString(i, );
  15. ahex = "0x" + ahex;
  16. achar = char(ahex.ToInt());
  17. retstr = retstr + achar;
  18.  
  19. }
  20. return retstr;
  21. }

UnicodeString>std:string

String at="abc";

std:string sstr = AnsiString(at).c_str();

字符串数组

var  arr:TArray<string>;

  1. TStringDynArray
  2.  
  3. ArrayOfString2 = array of string;
  4.  
  5. string2Bytes
    String astr = "中国";
    TBytes b1,b2,b3,b4;
    b1 = TEncoding::UTF8->GetBytes(astr);
    b2 = TEncoding::ANSI->GetBytes(astr);
    b3 = TEncoding::Default->GetBytes(astr);
    b4 = TEncoding::Unicode->GetBytes(astr);
    E4B8ADE59BBD
    D6D0B9FA
    D6D0B9FA
    2D4EFD56 高地位修正后:4E2D 56FD ,也有这样表单\u4e23 \u56fd
  6.  
  7. String s1,s2,s3,s4;
  8.  
  9. s1 = TEncoding::UTF8->GetString(b1);//中国
    s2 = TEncoding::ANSI->GetString(b2);//中国
    s3 = TEncoding::Default->GetString(b3);//中国
    s4 = TEncoding::Unicode->GetString(b4);//中国
  10.  
  11. bytes数组转换成HexString
    String bytesToHex(TBytes data)
    {
       String hexstr;
    for (int i = 0; i < data.Length; i++)
    hexstr+= IntToHex( data[i],2);
    return hexstr;
    }
  12.  
  13. 特殊汉字
    char=13,keypress,
    包含key=13:复
  14.  
  15. 包含tab
    delphiAnsiChar array 转换为 tbytes
    bts:tbytes;
    outbuf: array[0..1000] of AnsiChar;
  16.  
  17. setlength(bts,200);
  1. Move(bts[0[, outbuf[0], 200);
    https://www.cnblogs.com/del88/p/5448317.html
    bytesof(str)
    stringof(bytes) T

strAnsi:= PAnsiChar(AnsiString(str));

TBytes -> PChar :     LPChar :=  PChar(LTBytes);

PChar -> TBytes:LTBytes := BytesOf(LPChar);

TBytes -> Array of AnsiChar:move(LTBytes[i],LArrayOfAnsiChar[k]);

Array of AnsiChar -> string:LString := StringOf(BytesOf(LArrayOfAnsiChar));

  1. https://www.cnblogs.com/keynexy/p/5919962.html
  1.  

c++builder 字节 编码 转换大全 String TBytes byte的更多相关文章

  1. 前端中常见字节编码(base64、hex、utf8)及其转换

    /* * 字节编码转换 * 首先都需要转为二级制数组 (ArrayBuffer) * 然后才能转换对应的编码字符 * 前端常见编码: * base64:就是将二进制转为字符串,将每6个字节转为一个特定 ...

  2. java String与Byte[]和String 与InputStream转换时注意编码问题。。。

    前一段日子,我在做rsa加密和通过http get方式获取验证码图片通过BitmapFactory创建bitmap 出现了一系列的问题. 通过一系列的调试,发现有些问题原来是在进行String 与By ...

  3. String和bytes的编码转换

    import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; /** * @author 作者 E-mai ...

  4. java String编码转换

    /** * Get XML String of utf-8 * * @return XML-Formed string */ public static String getUTF8XMLString ...

  5. Python3中内置类型bytes和str用法及byte和string之间各种编码转换,python--列表,元组,字符串互相转换

    Python3中内置类型bytes和str用法及byte和string之间各种编码转换 python--列表,元组,字符串互相转换 列表,元组和字符串python中有三个内建函数:,他们之间的互相转换 ...

  6. C# string字节数组转换

    string转byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转string:string ...

  7. C#字节数组转换成字符串

    C#字节数组转换成字符串 如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了.为了进行这样的转换,我们不得不借助另一个类:System.Text.Enc ...

  8. PHP 支持中文目录和文件的的遍历:文件编码转换

    在使用 readdir() 遍历指定目录时,使中文目录和文件名都正常显示需要使用 iconv() 进行文件编码转换: <?php header("Content-type:text/h ...

  9. java中string与byte[]的转换

    1.string 转 byte[] byte[] midbytes=isoString.getBytes("UTF8"); //为UTF8编码 byte[] isoret = sr ...

随机推荐

  1. HDU 5586 简单最大子段和变形

    Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...

  2. UVALive-3126 Taxi Cab Scheme (DAG的最小路径覆盖)

    题目大意:要给n个人安排车,已知每个人的出发时间和起点与终点,问最少需要安排几辆车才能完成任务. 题目分析:最小路径覆盖.如果送完a到目的地后能在b出发之前赶来接b,那么连一条有向边a->b,最 ...

  3. app手机端连接tomcat电脑端服务器

    1.你要在电脑端开启并启动tomcat 2.启动nginx,然后需要在nginx中配置好端口号,每一个app的模块端口号是不一样的,需要你进行更改 3.如下图代表app连接的端口: 4.关于sql过滤 ...

  4. BZOJ2314 士兵的放置

    树形DP,恩然后就不会了... 先写了个错的离谱程序...果然WA了 然后开始乱搞,欸,对了! 令f[i], g[i], h[i]分别表示i号节点自己放士兵,被儿子上的士兵控制,不被儿子上的士兵控制但 ...

  5. 微信支付 WeixinJSBridge is not defined 报错

    https://www.cnblogs.com/ottoman/p/7614419.html 我没有用到微信JS-SDK或者接口都正确返回预支付id都正确, 为什么会报这个错呢?答: 微信内置浏览器会 ...

  6. PHP:第五章——字符串过滤函数

    <?php header("Content-Type:text/html;charset=utf-8"); //字符串过滤函数: //1.n12br 在所有新行之前插入Htm ...

  7. Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本

     Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本 文章编号 : 38783 软件: ArcGIS - ArcEditor 10 ArcGIS - ArcInfo 10 A ...

  8. facade外观模式

    通过买股票与通过基金买股票引出外观模式: package com.disign.facade; /** * Created by zhen on 2017-05-18. */ public class ...

  9. js实现trim()方法

    在面向对象编程里面去除字符串左右空格是很容易的事,可以使用trim().ltrim() 或 rtrim(),在jquery里面使用$.trim()也可以轻松的实现.但是在js中却没有这个方法.下面的实 ...

  10. cobbler装机错误--Failed to create kernel channel,-22

    最近使用cobbler安装GPU的机器遇到了一个错误:Failed to create kernel channel,-22 经过各种搜索发现是英伟达的显卡与centos7的默认显卡驱动冲突导致. 网 ...