我正在尝试将文本字段中的某些文本转换为(n)u32值。例如,我输入字符串格式(表示32位整数),“0x30323436”,字符串格式输出为“0246”。我正在尝试在C#中执行此操作,但我也可以使用C语言。谢谢。将4个字节(从字符串格式)转换为一个u32。 C或C#
1
A
回答
1
这应该做你想要什么:
string ParseWeirdFormat(string input)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.Length; i += 2)
{
string hex = input.Substring(i, 2);
int value = Convert.ToInt32(hex, 16);
char c = (char)value;
sb.Append(c);
}
return sb.ToString();
}
+0
非常感谢! – 2012-08-12 22:34:04
+0
实际上,如果文本是00,则会出现问题,然后结束字符串。有没有解决的办法? – 2012-08-20 07:08:27
+0
@DanGerendasy,只要检查'value == 0' ... – 2012-08-20 08:01:30
0
在C(C99以上):
#include <ctype.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static bool cvt(const char* in, char* out)
{
if (strlen(in) != 8)
return false;
char* end;
long n = strtol(in, &end, 16);
if (end == in || *end)
return false;
for(int i = 0; i < 4; i++)
{
unsigned char c = n >> ((3-i)*8);
if(!isdigit(c))
return false;
out[i] = c;
}
return true;
}
int main(int argc, char** argv)
{
char out[4];
if (argc <= 1 || !cvt(argv[1], out))
{
fprintf(stderr, "usage: %s hex-ASCII-encoding-of-four-digit-string\n", argv[0]);
return 1;
}
printf("%.4s\n", out);
return 0;
}
1
这就是为什么C是比C#冷却器:
char in[] = "0x30323436";
char out[5] = {0};
sscanf(in, "0x%02x%02x%02x%02x", &out[0], &out[1], &out[2], &out[3]);
相关问题
- 1. 如何将一个字符串转换为C#中的字节?
- 2. c#将字符串转换为单个
- 3. C#将字节数组与字符串转换为字符串
- 4. 将4个字节的字节转换为一个int
- 5. 字节转换为字符串C#
- 6. 从一个字符串中取一个字符并将其转换为int c
- 7. 给定一个字符串转换为4字节块的十六进制... C#
- 8. 将javascript字符串转换为MVC 4中的C#字符串?
- 9. C++将字符串[4]转换为字符串
- 10. C++和c#转换字节字符串
- 11. 将字节格式字符串转换为字节数组android
- 12. C#将字节字符串转换为字节数组
- 13. 将字符串[]转换为字节[] 2个字符转换为字节?
- 14. 将4个字符串转换为int32
- 15. 将一个字节的字符串转换为一个unsigned int
- 16. C++ - 将字符串转换为字符
- 17. 将一个UTF8字符串转换为一个UTF16字符串在c + +
- 18. 将IP或MAC地址从字符串转换为字节数组(Arduino或C)
- 19. 从字符串转换为字符 - C++
- 20. 将C++ printf格式转换为VB .NET字符串格式
- 21. 将字符串转换为格式为
- 22. C#将日期从字符串转换为日期格式
- 23. 格式化长字符串转换为短字符串C#
- 24. 将chrono :: duration转换为字符串或C字符串
- 25. 将一个字符串转换为另一个字符串
- 26. C#将字符串转换为数字
- 27. c#将一个字符串转换为2个双打
- 28. 如何将C风格的printf格式转换为C#字符串格式?
- 29. 不能将字符串隐式转换为字符串[]。在c#
- 30. 字符串转换为字节转换
我不没办法。如何从“30323436”获得“0246”?如果原始符号是十六进制,那么十进制值是808596534,而不是246. – 2012-08-12 22:08:18
哦,我想我明白了......原始符号实际上是十六进制数字的ASCII代码。你应该在你的问题中提到这一点,我们不应该猜测这种事情 – 2012-08-12 22:10:29
如果你真的只需要从字符串到字符串,并且你的输入是正确的,你可以提取其他每个字符。 – 2012-08-12 22:13:05