请教妖哥,字符串有关问题
请问妖哥,字符串问题
字符串是春眠234转换如下:
春B4BA
眠C3DF
232
333
434
妖哥给的程序只能转化汉字,数字不能转化,我们的需求是一直字符里有汉字、int、float,该怎么做?
这个是什么转换?GBK内码
------解决方案--------------------
好像是转换之前要用这个函数判断一下
- C/C++ code
AnsiString str = "春眠不觉晓处处闻啼鸟"; AnsiString strLine; int i = 0; BYTE a, b; while (i < str.Length()) { a = (BYTE)str[++i]; b = (BYTE)str[++i]; strLine.sprintf("%02X%02X", a, b); Memo1->Lines->Add(strLine); }
字符串是春眠234转换如下:
春B4BA
眠C3DF
232
333
434
妖哥给的程序只能转化汉字,数字不能转化,我们的需求是一直字符里有汉字、int、float,该怎么做?
这个是什么转换?GBK内码
------解决方案--------------------
好像是转换之前要用这个函数判断一下
- C/C++ code
isprint
------解决方案--------------------
- C/C++ code
AnsiString str = "春眠不觉aa晓处1处闻啼鸟"; AnsiString strLine; int i = 1; BYTE a, b; while (i < str.Length()) { switch (ByteType(str, i)) { case mbLeadByte: { a = (BYTE)str[i++]; break; } case mbTrailByte: { b = (BYTE)str[i++]; strLine.sprintf("%02X%02X", a, b); Memo1->Lines->Add(strLine); break; } case mbSingleByte: { a = (BYTE)str[i++]; strLine.sprintf("%02X", a); Memo1->Lines->Add(strLine); break; } default: break; } }
------解决方案--------------------
检测BYTE值是否>0x80如果大于只取两个字节,否则只取一个字节