C语言 unsigned short 如何相互转 signed char
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 unsigned short 如何相互转 signed char相关的知识,希望对你有一定的参考价值。
最近在做android音频项目,涉及到C语言
因为某个方法中生成的数据是unsigned short数组
然后要把数据传递给java层,然后java通过socket把数据传给另一台手机B,在传送过程时候是byte[](相当于C中的signed char[])
手机B把数据传进C层调用某个函数,但是这个函数接收的是unsigned short数组
问题来了
C/C++中
unsigned short 如何相互转 signed char
请写出两个方法 相互转换 谢谢.
int main()
char ca;
unsigned char ucb;
unsigned short usc;
ca = 128;
ucb =128;
usc = ca + ucb;
printf("%d\n", usc);
usc = ca + (short)ucb;
printf("%d\n", usc);
usc = (unsigned char)ca + ucb;
printf("%d\n", usc);
usc = ca + (char)ucb;
printf("%d\n", usc);
getchar();
return EXIT_SUCCESS;
结果是:0, 0, 256, 65280.
这道题最难得部分,莫过于你是否理解c语言中的数据类型转换 。
有个名词“Inerger Promotion"(整型提升):在算术类型中有这么一种转换,有符号或无符号的char型,short型和Bit-field在做算术运算之前,首先要做整型提升,然后才能参与运算。(其它的一些类型之间的转换,可以参考任何一本c语言书)追问
大哥,我看不懂,请直接写两个函数相互转换可以么
参考技术A用指针比较好做
unsigned short *usp;char *scp;
unsigned short us_array[3] = 0x1234, 0x1234, 0x1234;
char sc_array[4] = 'a', 'b', 'c', 'd';
usp = (unsigned short *)sc_array;
scp = (char *)us_array;
怎样把unsigned short 转换为 unsigned char
char 和short 是一样的,都是1个字节,至于无符号的话,char不存在这个问题。两者可以直接替换使用,没有问题。如果编译器有警告,则static_cast<unsigned short>(charVal),这样转化即可 参考技术A unsigned short s;
unsigned char c;
1.直接赋值
c=s;
2.强制转换
c=(unsigned char)s;
3.C++建议用法
c = static_cast<unsigned char>(s);
//short一般占两个字节
char占一个字节本回答被提问者和网友采纳 参考技术B unsigned short 转换为 unsigned char可以这样转:
unsigned short * word;
int size= WideCharToMultiByte(CP_ACP,0,word,-1, NULL, 0, NULL,0);
char * AsciiBuff =new char[size];
WideCharToMultiByte(CP_ACP,0,word,-1,AsciiBuff,size, NULL, 0);
以上是关于C语言 unsigned short 如何相互转 signed char的主要内容,如果未能解决你的问题,请参考以下文章
C语言 请问signed char,unsigned char,short,unsigned sh
C语言基础unsigned short类型用于循环的一个难点
C语言基础unsigned short类型用于循环的一个难点