问题标签 [unsigned-char]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
590 浏览

c++ - reinterpret_cast on char 和 unsigned char 之间的指针陷阱?

我正在使用以下函数来创建 UUID 并将其以人类可读的形式写入预分配的缓冲区。出了点问题。

在方法结束时,调试器说:

  • lDest = 0x01fe4fd8 "df4a5ed8-c0d2-495a-84d7-ce0e07cf2113"
  • PDST = 0x0012EC7C“ìììììììììììììììììììììììììììììììììììììììììììììììììììììììììììììììììììììììì”

我以为两者都有相同的内容,但事实并非如此。

发生了什么?谢谢。

0 投票
4 回答
3271 浏览

c++ - unsigned char 和 char 指针的区别

我对unsigned char(也在BYTEWinAPI 中)和char指针之间的差异有点困惑。

目前我正在使用一些基于 ATL 的遗留代码,我看到了很多如下表达式:

现在,实现ArrayToXXString如下所示:


所以,问题:

  • 对于所有可能的情况,从BYTE*LPCSTR( )的 C 风格转换是否安全?const char*

  • 将数组数据转换为宽字符串时是否真的需要添加双空终止?

  • 转换例程CStringW((LPCWSTR)copiedArray.GetData())对我来说似乎无效,是真的吗?

  • 有什么方法可以让所有这些代码更容易理解和维护?

0 投票
3 回答
485 浏览

c++ - osx lion上的无符号字符限制为127?

我面临一个奇怪的问题,在我的 mac osx lion 上工作(在 xcode4/clang 下,虽然它可以用 gcc4.2 重现)。

看来,我不能为 unsigned char 变量分配高于 127 的任何值。所以,当我分配

或者,简单地说

我的程序不产生任何输出。

当我运行这段代码

我得到以下输出:

无符号字符范围高达 255

但是,当我运行这样的东西时,程序每次都会生成高达一些不同的任意值(例如 c = 114、c = 252 等)的输出。for(unsigned char c = 0; c < CHAR_MAX; c++) std::cout << "c = " << 2*c << std::endl;

将 CHAR_MAX 更改为 UCHAR_MAX,程序再次结束而没有输出:(

提前致谢

0 投票
3 回答
952 浏览

c++ - 数组声明为 unsigned char 时的垃圾值

当一个数组被声明为 unsigned char 并使用 0x00-0xff 范围内的值初始化并使用 cout 打印时,我得到如下垃圾值

我可以知道如何使用单字节作为数字并且能够使用 cout 吗?

0 投票
2 回答
9247 浏览

c++ - 方便地复制 std::vector输入流 (std::istream) 对象

我正在尝试使用第 3 方库中的函数,并期望在其中传输二进制文件数据的输入流对象。

签名看起来像这样:

Since I can't alter/change this 3rd party lib/function, I have to adapt in "my" code. In the calling place, I have a std::vector which contains the data which is expected to be passed in an istream object. Currently I copy the vector to the stream, by iterating over it and using the << operator to copy byte by byte.

I strongly suspect that there might be a more effective/convenient way but couldn't find anything useful up to now. Any help/your thoughts are greatly appreciated.

Best, JR

0 投票
1 回答
1389 浏览

c++ - C/C++ 中的 C 样式无符号字符解析和操作 - 分段错误

请注意,我正在使用 C++ 编译器(因此,对calloc函数调用进行强制转换)来执行此操作,但代码本质上是 C。

基本上,我有typedef一个unsigned char已知的 as viByte,我用它来创建一个字符串缓冲区来解析二进制文件(确切地说是一个 TGA 文件 - 但是,这无关紧要)。

我现在正在为它编写基本功能;追加、前置、新建等

问题是,在第一个循环的第一次迭代中viByteBuf_Prepend,我遇到了分段错误。我需要确切地知道为什么,因为这可能会让我在没有一些指示的情况下整晚都睡不着觉(双关语)。

我还想知道我的算法在缓冲区如何预先挂起字符串方面是否正确viByte。例如,我觉得使用memset太多可能不是一个好主意,而且我的 unsigned char 的 printf 格式是否正确(我觉得它不是,因为没有任何东西输出到我的控制台)。

在 GCC、Linux 上编译。

泽码

非常感谢。

更新

抱歉,我应该明确发布分段错误所在的代码。它就在这里:

0 投票
4 回答
180 浏览

c++ - 如何对具有非标准二进制表示的数字进行算术运算?

使用 unsigned char,您可以存储0 到 255之间的数字

255 (b10) = 11111111 (b2) <= 那是 1 个字节

这将使执行诸如 +,-,*... 之类的操作变得容易

现在怎么样:

255 (b10) = 10101101 (b2)

遵循此方法将可以使用 unsigned char最多表示399 ?

399 (b10) = 11111111 (b2)

有人可以提出一种算法来使用最后一种方法进行加法吗?

0 投票
1 回答
1046 浏览

audio - 无法播放已被操纵的音频数据(无符号字符)

在处理音频数据后,我无法播放它们。我使用的唯一 API 是 C 语言中 Linux (Ubuntu) 上的 alsa lib API。我使用 read() 从无符号字符数组(称为 buffer1)中的 16 位整数波形文件中获取数据,并且可以正确播放 buffer1。我希望将数据传递给另一个相同大小的无符号字符数组(称为 buffer2)。如果我只是用 buffer2[i] = buffer1[i] 做一个循环,它就可以工作:buffer2 可以正常播放。但为了操作数据,我将其转换为浮点数组,然后再转换回 unsigned char(直到现在我不操作音频数据;我只是将它们转换为 float,然后再转换回 unsigned char 以测试它是如何工作的)。但是现在 buffer2 没有发出声音,尽管它的所有值都与 buffer1 的值完全相同(我制作了 buffer1 和 buffer2 的许多值的 printf;

请问有什么问题吗?

胜利者

0 投票
2 回答
1567 浏览

c++ - C++ char 数组复制到 unsigned char 数组

我正在尝试读取文件并将信息存储在无符号字符数组中。但是,我的程序似乎正在覆盖变量。

A 类标头:

A 类文件:

B 类标头:

B 类文件:

在我的调试器中观察位置变量表明,在 LoadMemoryBlock 调用之后,它不再像之前那样显示 16400,而是每次都不同的随机数。此外,文件 ifstream 也被 LoadMemoryBlock 调用损坏。所以我猜测 memcpy 正在覆盖它们。

我尝试以不同的方式初始化我的数组,但现在 memcpy 崩溃了!

A 类标头:

A 类文件:

B 类标头:

B 类文件:

我认为这些方法中至少一种(如果不是两种)应该有效。我究竟做错了什么?

编辑:我已经包含了上面的 ClassA 初始化。

这就是我调用 StoreFile 方法的方式:

0 投票
5 回答
14752 浏览

c++ - 在 C++ 中生成随机无符号字符值

我想知道如何生成随机无符号字符值。我的想法;
rand()%255;因为无符号字符支持在 0-255 之间。我想知道这种方法是否可以改进(或者它是最合法的方法)