• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

C#转C++(数组复制、char转16位无符号整数)

数组复制:

C#实现:

Copy(Array, Int32, Array, Int32, Int32)

复制 Array 中的一系列元素(从指定的源索引开始),并将它们粘贴到另一 Array 中(从指定的目标索引开始)。 长度和索引指定为 32 位整数。

c++实现:

1.字符数组

使用strcpy

2.int,float,double等数组

使用memcpy,如复制一个长度为5 的 float数组,则代码示例如下

int len = 5;

float a[len] = {1.0 ,1.1, 1.2, 1.3, 1.4};

float b[len];

memset(b, a, len*sizeof(float));

memcpy(b, a, len * sizeof(float));

注意,第三个参数不是指数组个数,而是指要复制的数据的总字节数长度

字节数组(C++中unsigned char)转16位整数

C#实现:

[System.CLSCompliant(false)]
public static ushort ToUInt16 (byte[] value, int startIndex);

参数

value Byte[]

包含要转换的两个字节的字节数组。

startIndex Int32

value 内的起始位置。

返回UInt16

由两个字节构成、从 startIndex 开始的 16 位无符号整数。

    byte[] byteArray = {
            15, 0, 0, 255, 3, 16, 39, 255, 255, 127 };

        BitConverter.ToUInt16( byteArray, 1 );
        BitConverter.ToUInt16( byteArray, 0 );
        BitConverter.ToUInt16( byteArray, 3 );
        BitConverter.ToUInt16( byteArray, 5 );
        BitConverter.ToUInt16( byteArray, 8 );
        BitConverter.ToUInt16( byteArray, 7 );

输出:
index   array elements    ushort
-----   --------------    ------
    1            00-00         0
    0            0F-00        15
    3            FF-03      1023
    5            10-27     10000
    8            FF-7F     32767
    7            FF-FF     65535

C++中无符号字节数组转无符号16位整数实现:

#include <iostream>

using namespace std;
int main()
{
	unsigned char ch[4] = { 0xAA,0x11,0x02,0x04 };    //-----》使用uchar
	printf("%d  %d\n", *ch, *(ch + 1));
	printf("%x  %x\n", *ch, *(ch + 1));
	printf("uint8_t:%d  %d\n", *(uint8_t*)ch, *(uint8_t*)(ch + 1));//十进制
	printf("uint8_t:%x  %x\n", *(uint8_t*)ch, *(uint8_t*)(ch + 1));//十六进制
	printf("uint16_t:%d  %d\n", *(uint16_t*)ch, *(uint16_t*)(ch + 1));//十进制
	printf("uint16_t:%d  %d\n", *(uint16_t*)(ch+2), *(uint16_t*)(ch + 3));//十进制
	printf("uint16_t:%x  %x\n", *(uint16_t*)ch, *(uint16_t*)(ch + 1));//十六进制

	system("pause");
	return 0;
}

输出:

全部回复(0)
正序查看
倒序查看
现在还没有回复呢,说说你的想法