byte 类型数组如何转换为宽字符串?

fighterhht 2009-03-17 12:34:14
文件中有如下数据(为字串“2009”的宽字符码):
00 32 00 30 00 30 00 39

上面数据已读入一 byte 数组,请问如何将此数组转换为宽字符串?
...全文
668 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
morris88 2009-03-29
  • 打赏
  • 举报
回复
或者

#define SWAP(x) (unsigned short)(((x) >> 8) | ((x) << 8))
unsigned int len = 10;
char *buf = "\x00\x32\x00\x30\x00\x30\x00\x39\xB1\xBE";
char16_t *tmp = (char16_t *)buf;

for (int i = 0; i < len / 2; i++) {
tmp[i] = SWAP(tmp[i]);
}

UnicodeString usTmp(tmp, len / 2);
morris88 2009-03-29
  • 打赏
  • 举报
回复
unsigned char *tmp = "\x00\x32\x00\x30\x00\x30\x00\x39\xB1\xBE";
UnicodeString usTmp;

usTmp.printf(L"%s", tmp);

你要的是不是这样的?我没看懂!
fighterhht 2009-03-29
  • 打赏
  • 举报
回复
求教!
fighterhht 2009-03-27
  • 打赏
  • 举报
回复
求教大侠!
fighterhht 2009-03-19
  • 打赏
  • 举报
回复
如何把下列位数据转换为字串呢:
00 32 00 30 00 30 00 39 B1 BE
really3353 2009-03-19
  • 打赏
  • 举报
回复
这是Unicode编码,不是ASCII编码,不过着不影响将它做转换,我同意5楼的观点。
zhangyuntian 2009-03-19
  • 打赏
  • 举报
回复
使用MultiByteToWideChar函数
gloam2018 2009-03-18
  • 打赏
  • 举报
回复

00 32 00 30 00 30 00 39
这样的数据形式,应该是unicode编码的,即使有汉字也没问题,
所以直接赋值就可以,memcpy().
lhsxsh 2009-03-18
  • 打赏
  • 举报
回复
用unicode 会好吧
fighterhht 2009-03-18
  • 打赏
  • 举报
回复
如果是下面的数据:
00 32 00 30 00 30 00 39 B1 BE

该如何(B1 BE 是汉字)?
fairchild811 2009-03-17
  • 打赏
  • 举报
回复
直接赋值
痞子酷 2009-03-17
  • 打赏
  • 举报
回复
呵呵,接分
xiaoshi0 2009-03-17
  • 打赏
  • 举报
回复
首先你要知道你读入的byte数组有多长,就拿你当前的例子来说,有8个字节,比如说字符数组是如下样子的:

BYTE bytes[8];

那么你应该创建一个宽字符的数组,当然长度应该是你字节数组的一半+1那么大,如下:

wchar_t *sz = new wchar_t[sizeof(bytes)/2 + 1];

然后用内存拷贝的方式将你的字节数组拷贝到字符数组中,并且在最后一个字符赋值为0,如下:

memcpy(sz, bytes, sizeof(bytes));
sz[sizeof(bytes)] = 0;

最后用WideString的拷贝构造函数创建一个宽字符串,并删除原来分配的内存,如下:

WideString str = sz;
delete[] sz;
preserve 2009-03-17
  • 打赏
  • 举报
回复
直接赋值就行了
nbzip 2009-03-17
  • 打赏
  • 举报
回复
byte pp[8];
pp[0]='00';
pp[1]='32';
pp[2]='00';
pp[3]='30';
pp[4]='00';
pp[5]='30';
pp[6]='00';
pp[7]='39';
AnsiString str="";
for(int i=0;i<8;i++)
{
pp[i+1]=pp[i+1]^pp[i];
str=str+IntToStr(pp[i+1]);
i++;
}
ShowMessage(str);
fighterhht 2009-03-17
  • 打赏
  • 举报
回复
如果包含汉字,又如何处理呢?
我不懂电脑 2009-03-17
  • 打赏
  • 举报
回复
WideString str = byte;
nbzip 2009-03-17
  • 打赏
  • 举报
回复
用ASC码来说的话,共有FF个字符.
你是宽字符串的话,就是用FF FF来表示.(好像为了汉字等一些特别的字符而考虑的)

你只要把00 32 00 30 00 30 00 39,这串,按二位串好了.如"00 32","00 30"....然后分别转化为ASCII码.
MouseSoft 2009-03-17
  • 打赏
  • 举报
回复
頂一下

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧